繁体   English   中英

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

[英]MySQL trigger: conditional insert syntax error

我有两个表: PersonStudent 我正在尝试编写一个触发器,该触发器在插入一个新人之后,如果该人小于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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM