有一张 table 。 Parent_id 引用相同的表 ID。如果parent_id = id,如何插入原始数据?我不知道 id(插入之前),如果没有parent_id 则无法插入。 无需获取最后一个 INCREMENT id 并创建临时表的最佳方法是什么?
CREATE TABLE `test` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`parent_id` int(11) unsigned NOT NULL,
`someotherfield` varchar(45) NOT NULL,
PRIMARY KEY (`id`),
FOREIGN KEY `constr_catalog_guid_id` (`parent_id`) REFERENCES `test` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
这不是工作:
Insert into 'test' values (parent_id = test.id, "NOt matter");
最佳答案
CREATE TRIGGER trigger_increment_id_for_another_field BEFORE INSERT ON test FOR EACH ROW
BEGIN
DECLARE next_id INT;
SET next_id = (SELECT AUTO_INCREMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME='test');
SET NEW.parent_id=next_id;
END
此触发器应根据每次插入行的 auto_increment 值复制parent_id 值。
关于mysql。同一个表中重复的自增键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11132106/