在mysql中创建触发器

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

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)的含义。

如果我理解正确 - 您试图根据table1中的条件更新插入行的字段。

此外,为了更改插入的行,您应该定义一个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中创建触发器 的全部内容, 来源链接: utcz.com/qa/263067.html

回到顶部