Created
March 30, 2018 00:05
-
-
Save adamzr/d387f81f7bd98df508c57c2869ec4d1d to your computer and use it in GitHub Desktop.
SQL to track changes to the DFBRestaurantStatus table in MySQL
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
CREATE TABLE IF NOT EXISTS DFBRestaurantStatusLog ( | |
DFBRestaurantStatusLogId BIGINT NOT NULL AUTO_INCREMENT, | |
WebRID int NOT NULL, | |
Operation nvarchar(1) NOT NULL, | |
UpdatedUTC datetime, | |
RestaurantStatusTypeID_Prior int, | |
RestaurantStatusTypeID_After int, | |
UpdatedBy_Prior varchar(50), | |
UpdatedBy_After varchar(50), | |
UpdatedUTC_Prior datetime, | |
UpdatedUTC_After datetime, | |
PRIMARY KEY (DFBRestaurantStatusLogId) | |
); | |
CREATE TABLE IF NOT EXISTS DFBRestaurantStatusEventWatermark ( | |
Watermark BIGINT NOT NULL, | |
UpdatedDateUtc DATETIME NOT NULL | |
) | |
CREATE TRIGGER tr_insert_DFBRestaurantStatus AFTER INSERT ON DFBRestaurantStatus | |
FOR EACH ROW | |
BEGIN | |
INSERT INTO DFBRestaurantStatusLog (WebRID, Operation, UpdatedUTC, RestaurantStatusTypeID_Prior, RestaurantStatusTypeID_After, UpdatedBy_Prior, UpdatedBy_After, UpdatedUTC_Prior, UpdatedUTC_After) | |
VALUES(NEW.WebRID, 'I', NOW(), NULL, NEW.RestaurantStatusTypeID, NULL, NEW.UpdatedBy, NULL, NEW.UpdatedUTC); | |
END; | |
CREATE TRIGGER tr_update_DFBRestaurantStatus AFTER UPDATE ON DFBRestaurantStatus | |
FOR EACH ROW | |
BEGIN | |
INSERT INTO DFBRestaurantStatusLog (WebRID, Operation, UpdatedUTC, RestaurantStatusTypeID_Prior, RestaurantStatusTypeID_After, UpdatedBy_Prior, UpdatedBy_After, UpdatedUTC_Prior, UpdatedUTC_After) | |
VALUES(NEW.WebRID, 'U', NOW(), OLD.RestaurantStatusTypeID, NEW.RestaurantStatusTypeID, OLD.UpdatedBy, NEW.UpdatedBy, OLD.UpdatedUTC, NEW.UpdatedUTC); | |
END; | |
CREATE TRIGGER tr_delete_DFBRestaurantStatus AFTER DELETE ON DFBRestaurantStatus | |
FOR EACH ROW | |
BEGIN | |
INSERT INTO DFBRestaurantStatusLog (WebRID, Operation, UpdatedUTC, RestaurantStatusTypeID_Prior, RestaurantStatusTypeID_After, UpdatedBy_Prior, UpdatedBy_After, UpdatedUTC_Prior, UpdatedUTC_After) | |
VALUES(OLD.WebRID, 'U', NOW(), OLD.RestaurantStatusTypeID, NULL, OLD.UpdatedBy, NULL, OLD.UpdatedUTC, NULL); | |
END; | |
CREATE PROCEDURE `RestaurantEventPublisher_CleanupDFBRestaurantStatusWatermark_V1` ( | |
IN OlderThanHours int | |
) | |
BEGIN | |
DELETE FROM DFBRestaurantStatusEventWatermark | |
WHERE UpdatedDateUtc <= DATE_SUB(CURDATE(), INTERVAL OlderThanHours HOUR) | |
END | |
CREATE PROCEDURE `RestaurantEventPublisher_CleanupDFBRestaurantStatusWatermark_V1` ( | |
IN OlderThanHours int | |
) | |
BEGIN | |
DELETE FROM DFBRestaurantStatusEventWatermark | |
WHERE UpdatedDateUtc <= DATE_SUB(CURDATE(), INTERVAL OlderThanHours HOUR) | |
END | |
CREATE PROCEDURE `RestaurantEventPublisher_GetDFBRestaurantStatusLogs_V1` ( | |
IN BatchSize int, | |
IN HighWatermark BIGINT | |
) | |
BEGIN | |
SELECT TOP(BatchSize) * FROM DFBRestaurantStatusLog | |
WHERE DFBRestaurantStatusLogId > HighWatermark | |
AND UpdatedUTC < DATE_SUB(CURDATE(), INTERVAL 1 MINUTE) | |
ORDER BY DFBRestaurantStatusLogId ASC | |
END | |
CREATE PROCEDURE `RestaurantEventPublisher_GetDFBRestaurantStatusWatermark_V1` ( | |
) | |
BEGIN | |
SELECT TOP(1) | |
IFNULL(Watermark, 1) AS HighWatermark | |
FROM DFBRestaurantStatusEventWatermark | |
ORDER BY WATERMARK DESC | |
END | |
CREATE PROCEDURE `RestaurantEventPublisher_UpdateDFBRestaurantStatusWatermark_V1` ( | |
IN HighWatermark BIGINT | |
) | |
BEGIN | |
INSERT INTO DFBRestaurantStatusEventWatermark (Watermark, UpdatedDateUtc) VALUES (HighWatermark, NOW()); | |
END |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment