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

时间:2016-08-29 22:13:19

标签: mysql relational-database database-trigger

我有两个表: 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附近。

错误,我不知道是否因为条件插入或日期时间操作或其他原因。

2 个答案:

答案 0 :(得分:2)

您希望使用如下所示的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;

答案 1 :(得分:1)

应该是:

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子句作为参数。 但你可以进行"测试"作为选择中的值......