MySQL触发器:条件插入语法错误

MySQL trigger: conditional insert syntax error

我有两个 table:PersonStudent。我正在尝试编写一个触发器,在插入一个新人后,如果该人小于 18 岁,则将其插入到学生 table 中。

触发器代码如下:

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

但我一直收到

You have an error in your SQL syntax... near select Person.ID from...interval 18 year.

错误,不知道是条件插入的问题,还是datetime操作的问题,还是其他原因。

应该是:

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

您不能将 SELECT 子句作为 VALUES 中的参数。 但是您可以将 "Test" 作为 select...

中的值

您想像下面那样使用 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;