MySQL存储过程更新表并删除相关的

时间:2018-03-12 09:18:23

标签: mysql stored-procedures

考虑我在MySQL数据库中有两个表AB,它们彼此相关:

create table A (
id int(11) not null auto_increment, 
name varchar(45),
is_archived TINYINT(1), 
create_date datetime)

create table B (
id int(11) not null auto_increment,
a_id int(11),
name varchar(45)

如何使用商店过程检查表A中的项目,如果create_date早于某个值(例如DATEDIFF(NOW(), a.create_date) >30),请将表A中的项目更新为a.is_archived =1,然后删除项目在表B中与此项目相关。

1 个答案:

答案 0 :(得分:0)

我猜您的存储过程看起来像:

//update table1
UPDATE A SET is_archived = 1 
WHERE DATEDIFF(NOW(), create_date) >30

//remove from table2
UPDATE B INNER jOIN A 
ON A.id = B.a_id SET DELETED = 1 
WHERE DATEDIFF(NOW(), a.create_date) >30

或者,如果您要删除表格中的行,请将UPDATE替换为DELETE