2016-08-29 4 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.

Ошибка, и я не знаю, связано ли это с условной вставкой или операцией datetime или с чем-то еще.

ответ

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. Но вы можете иметь «Test» в качестве значения в ваше отборного ...

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; 
Смежные вопросы