我有两个表: 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
附近。
错误,我不知道是否因为条件插入或日期时间操作或其他原因。
答案 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
子句作为参数。
但你可以进行"测试"作为选择中的值......