假设我有父表: Transaction_Logger
--------------------------------------------
Id | Txn_Name | Txn_Status | Txn_Time
--------------------------------------------
101 | C2C | Executed | 11-july-17
--------------------------------------------
201 | B2B | Aborted | 11-July-17
--------------------------------------------
301 | B2C | Executed | 12-July-17子表: Transaction_Error (Txn_Id是带有Transaction_Logger表ID列的外键)
------------------------------------
Id | Error_msg | Txn_Id
------------------------------------
410 | some error msg| 201
------------------------------------ 我还有另外两个表,分别具有相同的结构Transaction_Logger_Archive和Transaction_Error_Archive。
我们需要将主表数据归档到归档表中。如果我们将父表(Transaction_Logger)数据移动到其存档表(Transaction_Logger_Archive),那么子表(Transaction_Error)数据会自动将其存档到其存档表(Transaction_Error_Archive),是否有任何预定义的方法?例如:我们有在删除父表记录时删除子表记录的deleteOnCascade。
我需要在数据库服务器上支持上述行为: MySql,SqlServer,Oracle和Hsql
发布于 2017-07-18 20:04:17
您可以使用。这是MySQL中内置的事件调度程序。
您可以指定它以指定的时间间隔调用过程。
请阅读MySQL文档,但示例如下:
CREATE EVENT yourdatabase.eventname
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
CALL YOURPROCEDURE();在YOURPROCEDURE中,您可以编写用于归档多个表的逻辑。
DELIMITER $
CREATE PROCEDURE YOURPROCEDURE()
BEGIN
BEGIN TRANSACTION;
DECLARE CURRENT_DATE_VAR DATETIME;
/*
Your stuff
*/
END$
DELIMITER ;默认情况下,在MySQL中禁用事件计划程序。您可以将其打开run:
SET GLOBAL event_scheduler = ON;
https://stackoverflow.com/questions/45166112
复制相似问题