[英]MySQL trigger: conditional insert syntax error
我有两个表: Person和Student 。 我正在尝试编写一个触发器,该触发器在插入一个新人之后,如果该人小于18岁,则将其插入到学生表中。
这是触发器的代码:
CREATE TRIGGER test_trigger
AFTER INSERT
ON Person
FOR EACH ROW
BEGIN
insert into `Student`(TestValue, ID)
values("Test", select Person.ID from Person where Person.DateOfBirth > curdate() - interval 18 year);
END
但是我一直在
您的SQL语法中有一个错误...
select Person.ID from...interval 18 year
附近。
错误,并且我不知道是否是由于条件插入,日期时间操作或其他原因引起的。
您想使用insert into ... select from
下面的构造中进行insert into ... select from
并且不能将两个insert into .. values
构造与
insert into `Student`(TestValue, ID)
select "Test", Person.ID
from Person
where Person.DateOfBirth > curdate() - interval 18 year;
应该:
CREATE TRIGGER test_trigger
AFTER INSERT
ON Person
FOR EACH ROW
BEGIN
insert into `Student`(TestValue, ID)
select "Test", Person.ID from Person where Person.DateOfBirth > curdate() - interval 18 year;
END
您不能在VALUES
中将SELECT
子句用作参数。 但是您可以在选择中将“测试”作为值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.