假设我的 MySQL 数据库中有两个相互关联的表 A
和 B
:
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中与此项目相关的项目。
最佳答案
我猜你的存储过程看起来像:
//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
关于MySQL存储过程更新表和删除相关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49231660/