Skip to content

Instantly share code, notes, and snippets.

@SodaDev
Last active February 2, 2021 22:21
Show Gist options
  • Save SodaDev/2d6b8e8a8c0fdc1b85d02ced76280b3d to your computer and use it in GitHub Desktop.
Save SodaDev/2d6b8e8a8c0fdc1b85d02ced76280b3d to your computer and use it in GitHub Desktop.
DROP TRIGGER IF EXISTS UPDATED_ROUTE;
CREATE TRIGGER UPDATED_ROUTE
AFTER UPDATE
ON routes
FOR EACH ROW
BEGIN
IF (
MD5(CONCAT_WS('', NEW.airportFrom, NEW.airportTo, NEW.connectingAirport, NEW.newRoute, NEW.seasonalRoute, NEW.operator, NEW.group, NEW.tags))
<> MD5(CONCAT_WS('', OLD.airportFrom, OLD.airportTo, OLD.connectingAirport, OLD.newRoute, OLD.seasonalRoute, OLD.operator, OLD.group, OLD.tags))
) THEN
CALL mysql.lambda_async(
'RDS-EVENTS-CONSUMER',
JSON_OBJECT(
'new', JSON_OBJECT(
'airportFrom', NEW.airportFrom,
'airportTo', NEW.airportTo,
'connectingAirport', NEW.connectingAirport,
'newRoute', NEW.newRoute is true,
'seasonalRoute', NEW.seasonalRoute is true,
'operator', NEW.operator,
'group', NEW.group,
'tags', NEW.tags,
'similarArrivalAirportCodes', NEW.similarArrivalAirportCodes,
'carrierCode', NEW.carrierCode),
'old', JSON_OBJECT(
'airportFrom', OLD.airportFrom,
'airportTo', OLD.airportTo,
'connectingAirport', OLD.connectingAirport,
'newRoute', OLD.newRoute is true,
'seasonalRoute', OLD.seasonalRoute is true,
'operator', OLD.operator,
'group', OLD.group,
'tags', OLD.tags,
'similarArrivalAirportCodes', OLD.similarArrivalAirportCodes,
'carrierCode', OLD.carrierCode)
)
);
end if;
end;
# Test update
INSERT INTO flights.routes (airportFrom, airportTo, connectingAirport, newRoute, seasonalRoute, operator, `group`, tags, similarArrivalAirportCodes, carrierCode) VALUES ('FOO', 'BAR', null, false, false, 'RYANAIR', 'CITY', '', '', 'FR');
UPDATE flights.routes SET newRoute = true WHERE airportFrom = 'FOO' AND airportTo = 'BAR';
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment