如何在同一行中插入id的号码?

时间:2016-05-11 07:45:26

标签: mysql sql auto-increment

我试图将id的数量放在邻居列中。像这样:

+----+-------------------+
| id | identical_with_id |
+----+-------------------+

idAUTO INCREMENT,所有需要在插入时都会获得id号码。我可以这样做:

INSERT INTO `table_name`
  VALUES( NULL, 
          (SELECT `AUTO_INCREMENT` FROM INFORMATION_SCHEMA.TABLES 
             WHERE TABLE_SCHEMA = 'database_name' AND
                   TABLE_NAME   = 'table_name')
        );

但我不知道它会一直有效。也许在执行该子查询插入该行之间,新行(另一行)得到插入。在这种情况下,id的数量将与邻居列不同。哼?那可能吗?

注意:请不要告诉我:"您需要什么?"

2 个答案:

答案 0 :(得分:2)

通常每个人都需要做这样的事情。并且最好不要问原因:)

我认为您正在以正确的方式执行此操作,但您需要检查您正在使用的MySql引擎,并确保inserts按顺序执行。

通常,insert语句将锁定表并在完成时解锁。这意味着您检索auto increment的查询非常安全。

对于MySql引擎和相关设置,这篇文章可以帮助您:

Does a MySQL multi-row insert grab sequential autoincrement IDs?

对于InnoDb:

http://dev.mysql.com/doc/refman/5.1/en/innodb-auto-increment-handling.html

答案 1 :(得分:1)

您可以在查询后立即使用LAST_INSERT_ID()。

INSERT INTO `table_name` VALUES( NULL, NULL);
SELECT LAST_INSERT_ID() INTO @last_id;
UPDATE `table_name` SET duplicate_id_column = @last_id WHERE id = @last_id;