繁体   English   中英

MySQL将附加字段的值设置为auto_increment值

[英]MySQL set value of addional field to auto_increment value

我有一个具有AUTO_INCREMENT id表,该表也有一个parent_id字段。 在某些情况下,当插入数据本身是父项而没有父项时,我需要将parent_id设置为其自己的id相同的值。

是否可以使用单个sql语句,还是必须执行LAST_INSERT_ID和单独的更新语句?

谢谢

您必须在单独的语句中进行操作。

树系统通常假定“ 0”为无父项的根或父级或第一级项的父级,而数据库中不存在“ 0”。

我建议您不要为该项目的父项设置相同的ID,因为...此项目是他自己的父亲? 你真的需要吗?

从技术上讲这是可能的,尽管我强烈建议不要这样做。 该查询可以工作的唯一方法是,如果您可以保证不会删除任何记录,甚至我仍然说不要使用它。 但是如果你必须...

INSERT INTO `table` (field1, field2, parent_id)
VALUES('data1', 'data2', 
            (SELECT id FROM (SELECT max(id) AS id FROM `table`) AS a) + 1
       )

同样,最好还是在2个查询中执行此操作。 原因是人工智能的工作方式。 如果最后一条记录为20并被删除,则下一个条目将为21,但parent_id将为20,因为它将看到max(id)为19。

是的你可以。 要获取表的下一个auto_increment值,您可以执行以下操作:

SELECT AUTO_INCREMENT 
FROM information_schema.TABLES 
WHERE table_name='table_name' 
AND table_schema='schema_name';

不要使用MAX ,因为如果您从表中删除最后一行并计算max,它将不会为您提供下一个auto_increment值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM