Я работаю над установкой простой базы данных SQLite к доступу с помощью Python. До сих пор у меня есть одна основная таблица и несколько триггеров - я хочу иметь одно триггерное обновление полевой столбец 'date_added', когда новая запись добавляется, и другой для обновления столбца 'date_updated', когда запись позже обновляется. Вот мой синтаксис SQLite для триггеров:
CREATE TRIGGER add_contact AFTER INSERT ON contact_info
BEGIN
UPDATE contact_info SET date_added = DATETIME('NOW') WHERE pkid = new.pkid;
END;
CREATE TRIGGER update_contact AFTER UPDATE ON contact_info
BEGIN
UPDATE contact_info SET date_updated = DATETIME('NOW') WHERE pkid = new.pkid;
END;
Триггер 'add_contact', кажется, хорошо работает..., он стреляет, когда я добавляю новую запись через sql команду INSERT, как запланировано.
Проблема, кажется, триггер 'update_contact'... это стреляет и когда я обновляю запись через sql команду UPDATE (как запланировано) и когда я добавляю новую запись также:
т.е. когда я добавляю новую запись, я получаю это в 'date_added' и 'date_updated' столбцах:
2010-07-12 05:00:06|2010-07-12 05:00:06
и когда я обновляю ту запись, она изменяется как так:
2010-07-12 05:00:06|2010-07-12 05:14:26
Я предполагаю, что не добираюсь, почему триггерные огни ОБНОВЛЕНИЯ ВСТАВЛЯЮТ также?
TIA,
Монте-Карло
Отредактированный для добавления: Какие-либо подсказки, как заставить его работать, как предназначено?
У вас есть UPDATE в триггере INSERT. Поэтому INSERT вызывает UPDATE. Которое вы зацепили другим триггером.