我试图将id
的数量放在邻居列中。像这样:
+----+-------------------+
| id | identical_with_id |
+----+-------------------+
id
为AUTO 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的数量将与邻居列不同。哼?那可能吗?
注意:请不要告诉我:"您需要什么?"
答案 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;