gpt4 book ai didi

mysql - 在mysql中创建触发器

转载 作者:行者123 更新时间:2023-11-28 23:58:27 26 4
gpt4 key购买 nike

我在执行触发器时遇到了一些问题。我有两个表:table2 中的 table1 和 table2 我有 table1 的外键,也在 table1 中我有一个日期......我有什么要做的是:用 table1 中的日期减去当前日期,如果是 7 的主要日期,那么我必须将 table2 中属性中的值设置为“10”,如果是次要的,那么我必须设置“20”..所以我试过了:

CREATE DEFINER = CURRENT_USER TRIGGER `datab1`.`table2_AFTER_INSERT` AFTER INSERT ON `table2` FOR EACH ROW
BEGIN
if(year(currentdate())-year(table1.datein))<7 then
set table2.test="10"
elseif (year(currentdate())-year(table1.datein))>=7 then
set table2.test="20"
end if;

END

但我遇到了很多错误。我刚开始学习这些东西不久,但我不太了解如何使用触发器。你能帮我吗?

最佳答案

在 MySQL 的触发器中 - 你必须编写 SQL。例如,MySQL 不知道你所说的年份(table1.datein)是什么意思。

如果我没理解错的话——您正试图根据表 1 中的条件更新插入行的字段。

此外,为了更改插入的行,您应该定义一个 BEFORE 触发器而不是 AFTER

这是应该如何完成的:

CREATE DEFINER = CURRENT_USER TRIGGER  `datab1`.`table2_BEFORE_INSERT`
BEFORE INSERT ON `table2` FOR EACH ROW
BEGIN
DECLARE x INT;
SET x= (SELECT year(NOW()) - year(table1.datein) FROM table1 WHERE NEW.fk_field = table1.id );
IF x <7 THEN
SET NEW.test = 10;
ELSE
SET NEW.test = 20;
END IF;
END;

希望对您有所帮助。

关于mysql - 在mysql中创建触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30783751/

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