在 mysql 中创建触发器
creating triggers in mysql
我在执行触发器时遇到了一些问题。我有两个表: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;
希望对您有所帮助。
我在执行触发器时遇到了一些问题。我有两个表: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;
希望对您有所帮助。