您可以一次将自动增量值插入几列吗?
示例表“ 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
列。