2016-08-29 90 views
0

我有兩個表:學生。我想寫一個觸發器,插入一個新的人後,如果該人不到18歲,就插入到學生表中。MySQL觸發器:條件插入語法錯誤

這裏是觸發的代碼:

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

錯誤,我不知道是因爲條件插入,還是日期時間操作,或其他。

回答

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參數。 但你可以有「測試」爲你選擇一個值...

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;