Проблема, о которой вы спрашивали, - это синтаксическая ошибка в вашем коде триггера.
Решение состоит в том, чтобы использовать специальное ключевое слово NEW
вместо имени таблицы.
CREATE TRIGGER car_trigger AFTER INSERT ON Car
FOR EACH ROW UPDATE Car SET NEW.CarID = NEW.InsuranceNumber
Но вы должны знать, что это не сработает, если вы пытаетесь скопировать один столбец автоинкремента в другой, потому что вы не можете изменить значения столбцов NEW.*
в триггере AFTER
. Строка уже вставлена, и уже слишком поздно менять значения.
Но в триггере BEFORE
значение автоинкремента еще не было сгенерировано, и столбец автоинкремента по-прежнему будет иметь значение NULL.
Единственный способ сделать что-то эквивалентное «двум столбцам с автоинкрементом» - это сгенерировать автоматическое значение, не используя AUTO_INCREMENT
, а с помощью какого-либо другого механизма, поэтому вы можете указать значение в строке при выполнении оператора SQL ,