2015-04-22 3 views
0

У меня есть таблица с 4-мя столбцами:ПОСЛЕ ВСТАВКИ триггером на той же таблице

ID, start_time, time, end_time 

Теперь, если я хочу, чтобы вставить строки в моей таблице, то end_time должны быть заполнены автоматически. Поэтому мне нужно только указать два значения (идентификатор вставлен автоматически): start_time и time.

Для этого я использую функцию DATE_ADD.

date_add(start_time, interval time minute) 

Я хочу использовать триггер AFTER INSERT для этого, но я не знаю, как создать этот триггер.

Заранее благодарен!

EDIT: DATE_ADD

+0

И что бы вы ввели для 'end_time'? –

+0

Я бы ввел функцию date_add. Я немного отредактировал это. – RVstack

ответ

1

Вы не можете обновить ту же таблицу, где триггер выполняется. Таким образом, вы должны использовать before insert

delimiter // 
create trigger table_before_insert before insert on table_name 
for each row 
begin 
set new.end_time = date_add(/*your increment logic here */); 
end;// 

delimiter; 

вы можете получить доступ ко всем данным с помощью new и использовать их внутри DATE_ADD функции по мере необходимости.

+0

Спасибо. Это сделал трюк для меня! – RVstack

0

Если вы используете правильные типы данных (DATETIME/TIME), вы можете сделать DATE_ADD в запросе напрямую. Например, если вы хотите установить end_time быть start_time + time, вы можете сделать это в вашей вставки даного:

INSERT INTO `table` (`start_time`, `time`, `end_time`) 
VALUES (
    '2015-04-22 13:37:00', 
    '02:30:00', 
    DATE_ADD(`start_time`, INTERVAL `time` HOUR_SECOND) 
); 

Это было бы установить end_time в 2015-04-22 16:07:00 мгновенно.

Смежные вопросы