gpt4 book ai didi

Mysql 使用 if 语句和变量触发

转载 作者:行者123 更新时间:2023-11-29 12:36:40 24 4
gpt4 key购买 nike

好的,所以我需要创建一个需要使用 if elseif 和另一个 elseif 的插入后触发器。 if、elseif、elseif需要基于从其他3个数据库表中获取的查询数据。我想知道是否有一种方法可以做到这一点,而不必在一开始就运行所有三个查询。

BEGIN
SET @t3 = (SELECT team_id FROM team_trans WHERE key1 = NEW.trans_id LIMIT 1);
SET @t2 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.STORE_ID AND team_assignments.type = 1);
SET @t1 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.CUSTOMER_ID AND team_assignments.type = 0);
IF (@t3) THEN
INSERT INTO team_trans (team_id, trans_id, type, misc_id) VALUES (@t3, NEW.id, 0, 1 );
ELSEIF (@t1) THEN
INSERT INTO team_trans (team_id, trans_id, type, misc_id) VALUES (@t1, NEW.id, 0, 1 );
ELSEIF (@t2) THEN
INSERT INTO team_trans (team_id, trans_id, type, misc_id) VALUES (@t2, NEW.id, 0, 1 );
END IF;
END

最佳答案

一个选项是:

...
BEGIN
/*
SET @t3 = (SELECT team_id FROM team_trans WHERE key1 = NEW.trans_id LIMIT 1)//
SET @t2 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.STORE_ID AND team_assignments.type = 1)//
SET @t1 = (SELECT team_id FROM team_assignments WHERE team_assignments.misc_id = NEW.CUSTOMER_ID AND team_assignments.type = 0)//
*/
IF (SELECT @t3 := team_id
FROM team_trans
WHERE key1 = NEW.trans_id
LIMIT 1) THEN
INSERT INTO team_trans (team_id, trans_id, type, misc_id)
VALUES
(@t3, NEW.id, 0, 1);
ELSEIF (SELECT @t1 := team_id
FROM team_assignments
WHERE team_assignments.misc_id = NEW.CUSTOMER_ID AND team_assignments.type = 0) THEN
INSERT INTO team_trans (team_id, trans_id, type, misc_id)
VALUES
(@t1, NEW.id, 0, 1);
ELSEIF (SELECT @t2 := team_id
FROM team_assignments
WHERE team_assignments.misc_id = NEW.STORE_ID AND team_assignments.type = 1) THEN
INSERT INTO team_trans (team_id, trans_id, type, misc_id)
VALUES
(@t2, NEW.id, 0, 1);
END IF;
END//
...

关于Mysql 使用 if 语句和变量触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26679405/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com