MySQL触发器:条件插入语法错误
MySQL trigger: conditional insert syntax error
我有两个 table:Person 和 Student。我正在尝试编写一个触发器,在插入一个新人后,如果该人小于 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;
我有两个 table:Person 和 Student。我正在尝试编写一个触发器,在插入一个新人后,如果该人小于 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;