MYSQL: вставить значение автоинкремента в несколько столбцов - PullRequest
0 голосов
/ 15 декабря 2018

Можно ли вставить значение автоинкремента в несколько столбцов одновременно?

Пример таблицы `zoo`:

id (int autoincrement primary_key);

parent (int);

data (varchar, 10).

INSERT INTO zoo (id, parent, data) VALUES (NULL, id, "tiger");

Или мне нужно сделать второй запрос?

UPDATE TABLE zoo SET parent=id WHERE parent IS NULL;

1 Ответ

0 голосов
/ 15 декабря 2018

Вы можете сделать это с помощью триггера перед вставкой:

DELIMITER //
CREATE TRIGGER same_id_trigger
BEFORE INSERT 
    ON zoo FOR EACH ROW

BEGIN
    DECLARE id int DEFAULT 0;

    SELECT auto_increment INTO id
    FROM information_schema.tables
    WHERE table_name = 'zoo' AND table_schema = database();

    SET NEW.parent = id;

END; //
DELIMITER ;

Если вышеуказанный триггер работает, то он работает, напрямую запрашивая информационную схему, чтобы найти текущее значение автоматического приращения для zoo стол.Затем триггер эффективно перехватывает вставку и меняет это значение автоинкремента на столбец parent.

...