首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将父子表数据移动到存档表(具有相同列)

如何将父子表数据移动到存档表(具有相同列)
EN

Stack Overflow用户
提问于 2017-07-18 19:56:33
回答 1查看 335关注 0票数 0

假设我有父表: Transaction_Logger

代码语言:javascript
复制
--------------------------------------------
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列的外键)

代码语言:javascript
复制
 ------------------------------------
    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

EN

回答 1

Stack Overflow用户

发布于 2017-07-18 20:04:17

您可以使用。这是MySQL中内置的事件调度程序。

您可以指定它以指定的时间间隔调用过程。

请阅读MySQL文档,但示例如下:

代码语言:javascript
复制
CREATE EVENT yourdatabase.eventname
ON SCHEDULE EVERY 1 DAY STARTS CURRENT_TIMESTAMP + INTERVAL 1 HOUR
DO
 CALL YOURPROCEDURE();

在YOURPROCEDURE中,您可以编写用于归档多个表的逻辑。

代码语言:javascript
复制
DELIMITER $

CREATE PROCEDURE YOURPROCEDURE()
BEGIN
BEGIN TRANSACTION;

DECLARE CURRENT_DATE_VAR DATETIME;
/*
Your stuff
*/
END$

DELIMITER ;

默认情况下,在MySQL中禁用事件计划程序。您可以将其打开run:

SET GLOBAL event_scheduler = ON;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45166112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档