Триггер аудита SQLite
Создаю триггер аудита в SQLite. Необходимо, чтобы при любом UPDATE триггер задал NEW.change_date этой же таблицы в значение текущей даты. Простое выражение NEW.change_date = ... не пускает
CREATE TRIGGER DRCT_AUDIT
UPDATE ON DIRECTORIES
BEGIN
NEW.change_date = strftime('%s', CURRENT_TIMESTAMP);
END;
Такой синтаксис недопустим в SQLite? Есть ли какая-нибудь замена?
Получилось только так, но выглядит, по-моему, не очень:
CREATE TRIGGER DRCT_AUDIT
UPDATE OF <здесь исключен change_date>
ON DIRECTORIES
BEGIN
UPDATE directories
SET change_date = strftime('%s', CURRENT_TIMESTAMP)
WHERE drct_id = NEW.drct_id;
END;
Ответы (1 шт):
Автор решения: Ainar-G
→ Ссылка
Ваш второй вариант ближе к правде. Вот как можно ещё:
CREATE TRIGGER IF NOT EXISTS
AFTER UPDATE
ON directories
FOR EACH ROW
BEGIN
UPDATE directories
SET change_date = STRFTIME('%s', CURRENT_TIMESTAMP)
WHERE drct_id = NEW.drct_id
;
END
;