mysql 内的 if 语句触发
if statements inside mysql trigger
所以我有两个表 practice 和 practice1,其中都有一个自动递增 id 和一个名称和姓氏列。
我做了一个插入后触发器,里面有一个 if 语句,我在其中放置了一个条件,如果名称为空,则应该发生一个插入,如果姓氏为空,则另一个插入,但由于某种原因它不起作用。我正在分享我试过的脚本。
CREATE DEFINER = CURRENT_USER TRIGGER `id_information`.`practice_after_INSERT1` AFTER INSERT ON `practice` FOR EACH ROW
BEGIN
if (`name` = NULL) then
insert into id_information.practice1(surname) values(new.surname);
else
(`surname` = NULL) then
insert into id_information.practice1(name) values(new.name);
end if;
END$$
delimiter ;
请指正我的错误。 id_information 是数据库的名称。
我想你想要的语法是:
delimiter $$
create definer = current_user trigger `id_information`.`practice_after_insert1`
after insert on `practice` for each row
begin
if new.name is null then
insert into id_information.practice1(surname) values(new.surname);
elseif new.surname is null then
insert into id_information.practice1(name) values(new.name);
end if;
end$$
delimiter ;
要点:
您需要使用伪table new
来访问刚刚插入的行
你的 if
语句的结构应该是 if ... then ... elseif ... end
要对照 null
检查一个值,请使用 is null
而不是 = null
(这永远不是真的)
所以我有两个表 practice 和 practice1,其中都有一个自动递增 id 和一个名称和姓氏列。 我做了一个插入后触发器,里面有一个 if 语句,我在其中放置了一个条件,如果名称为空,则应该发生一个插入,如果姓氏为空,则另一个插入,但由于某种原因它不起作用。我正在分享我试过的脚本。
CREATE DEFINER = CURRENT_USER TRIGGER `id_information`.`practice_after_INSERT1` AFTER INSERT ON `practice` FOR EACH ROW
BEGIN
if (`name` = NULL) then
insert into id_information.practice1(surname) values(new.surname);
else
(`surname` = NULL) then
insert into id_information.practice1(name) values(new.name);
end if;
END$$
delimiter ;
请指正我的错误。 id_information 是数据库的名称。
我想你想要的语法是:
delimiter $$
create definer = current_user trigger `id_information`.`practice_after_insert1`
after insert on `practice` for each row
begin
if new.name is null then
insert into id_information.practice1(surname) values(new.surname);
elseif new.surname is null then
insert into id_information.practice1(name) values(new.name);
end if;
end$$
delimiter ;
要点:
您需要使用伪table
new
来访问刚刚插入的行你的
if
语句的结构应该是if ... then ... elseif ... end
要对照
null
检查一个值,请使用is null
而不是= null
(这永远不是真的)