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