Mysql 如果一个表上的insert更新另一个表上的相同列,如何设置触发器
表一Mysql 如果一个表上的insert更新另一个表上的相同列,如何设置触发器,mysql,Mysql,表一 tb1_id tbl_name tb2_id 1 ab 0 台布 插入tableTOW(“tb2\u id,tb2\u名称,tb1\u id)值('10,'name',1) 结果将是: tb2_id tb2name tb1_id 10 name 1 现在tableONE应该更新列tb2_id=12,因为在插入tableTOW时,tb1_id是(1) 如何在insert期间使用where条件(whe
tb1_id tbl_name tb2_id
1 ab 0
台布
插入tableTOW(“tb2\u id,tb2\u名称,tb1\u id)值('10,'name',1)
结果将是:
tb2_id tb2name tb1_id
10 name 1
现在tableONE应该更新列tb2_id=12,因为在插入tableTOW时,tb1_id是(1)
如何在insert期间使用where条件(where tableTOW.tb1_id=tableONE.tb1_id)更新其他表时设置此类触发器
关于使用过程使其原子化,否则在应用程序逻辑中执行
# change the delimiter to $$, so you can use semicolon in create procedure
DELIMITER $$
USE database_name$$
DROP PROCEDURE IF EXISTS data_insert$$
CREATE PROCEDURE data_insert(IN tb1_id INT, IN tbl_name VARCHAR(50), IN tb2_id INT)
BEGIN
INSERT INTO tableONE (tb1_id, tbl_name, tb2_id) VALUES (tb1_id, tbl_name, tb2_id);
######## ######## ######## ######## #######
####### WRITE YOUR UPDATE QUERY HERE ########
######## ######## ######## ######## #######
END$$
# change the delimiter back to semicolon
DELIMITER ;
程序代码取自
对于更新,我使用了
CREATE TRIGGER `ins_trig` AFTER INSERT ON `tableTOW`
FOR EACH ROW UPDATE tableONE
UPDATE tb2_id= new.tb2_id
WHERE tb1_id = NEW.tb1_id
感谢您的评论和回答。
列tb2\u id=12
或列tb2\u id=10
,因为您在表2中为tb2\u id
输入10,为tb1\u id
CREATE TRIGGER `ins_trig` AFTER INSERT ON `tableTOW`
FOR EACH ROW UPDATE tableONE
UPDATE tb2_id= new.tb2_id
WHERE tb1_id = NEW.tb1_id