您可以一次将自动增量值插入几列吗?

示例表“ zoo”:

id(int autoincrement primary_key);

父母(int);

数据(varchar,10)。

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

还是我必须进行第二次查询?

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

最佳答案

您可能可以通过插入之前触发器来执行此操作:

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列。

07-28 04:27
查看更多