Я попытался создать триггер BEFORE в SQLite для регистрации любых обновлений значений атрибута населения таблицы Country.
Сначала я создал таблицу country_log, используя следующий код:
CREATE TABLE country_log (
CountryCode TXT,
old_population INT,
new_population INT,
change_date TXT
);
После успешного создания таблицы я попытался использовать следующий код для создания триггера BEFORE и для обновления значения в таблице Country, чтобы избежать ошибки «Невозможно выполнить фиксацию - транзакция не активна».
CREATE TRIGGER update_country_log
BEFORE UPDATE OF population ON country
BEGIN
INSERT INTO country_log VALUES
(NEW.code, OLD.population, NEW.population, datetime('now'));
END;
UPDATE country
SET population = 24433300
WHERE code = 'AUS';
Запрос CREATE TRIGGER
был успешно выполнен. Однако после выполнения запроса в таблице country_log по-прежнему не было записи, и я все еще не мог найти ни одного триггера, отображаемого рядом с таблицей Country. Почему это было так?