Создание 2 столбцов AUTO _INCREMENT в одной таблице в MySQL - PullRequest
0 голосов
/ 03 мая 2018

У меня есть такая таблица:

CREATE TABLE Car
    (
     CarID          INT NOT NULL AUTO_INCREMENT ,
     CarBrand        VARCHAR(20) NOT NULL ,
     InsuranceNumber INT NOT NULL ,

    PRIMARY KEY (CarID))AUTO_INCREMENT=1;

Я хочу InsuranceNumber с автоматическим увеличением, как CarID, но Я знаю, что не может быть 2 столбцов с автоинкрементом одновременно, но я провел некоторое исследование и обнаружил, что могу сделать это с помощью создания trigger. Я попробовал сам, но не смог сделать то, что хочу.

Я пробовал что-то вроде этого:

CREATE TRIGGER car_trigger AFTER INSERT ON Car
FOR EACH ROW UPDATE Car SET Car.CarID = Car.InsuranceNumber 

Но я получаю синтаксическую ошибку. Что мне делать?

1 Ответ

0 голосов
/ 04 мая 2018

Проблема, о которой вы спрашивали, - это синтаксическая ошибка в вашем коде триггера.

Решение состоит в том, чтобы использовать специальное ключевое слово 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 ,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...