mysql。同一个表中重复的自增键

标签 mysql foreign-keys auto-increment self-reference

有一张 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/

相关文章:

java - 使用 HSQLDB (2.2.8) + DDLUtils 自动增量

mysql - 如何在MySql中不使用自动增量来增加主键

python - 过滤外键值 django

mysql - DatabaseCleaner 不适用于 Capybara 自动化测试

python - 在表单中将初始化的外键字段设置为只读

mysql - 插入时自动用外键替换值

mysql - 了解MySql Auto_Increment

android - 在 Android 的 Room 库中重置自动增量

MySQL GROUP BY 和限制连接

javascript - jQuery函数仅执行一次?