【问题标题】:Mysql inserted id in the insert's value arrayMysql在insert的value数组中插入了id
【发布时间】:2014-11-09 16:20:43
【问题描述】:

所以我将订单存储在我的表中,如下所示:

ID、姓名、订单

1, name_1, 1000

2, name_2, 2000

3, name_3, 3000

所以基本上: 订单 = ID*1000

我所做的就是在这样的表格中插入行之后

INSERT INTO table(name) VALUES('name_x');

我像这样更新这一行中的订单值:

UPDATE table SET order = mysql_insert_id()*1000 WHERE id = mysql_insert_id();

还有其他方法可以不将其分为两个语句吗?像一些神奇的mysql函数ACT_ID()

应该是这样的

INSERT INTO table(name, order) VALUES('name_x',ACT_ID()*1000);

提前感谢您的所有回复。

【问题讨论】:

  • 如果这是一个固定规则,为什么你的数据库里还有这个?只需在检索记录时使用 ID 并将其乘以 1000。现在,您的数据库包含两次相同的信息,这是多余且毫无意义的。 :)
  • 我明白你的意思,你不应该在数据库中存储任何可计算的数据。但问题是,如果我想在对象 1 和对象 2 之间移动 id 为 3 的对象 - 基本上将其上移一级,我将其 ORDER 列更新为 (1000+2000)/2。所以对象的顺序现在是 ID。命令。 .. 1. 1000, 3. 1500, 2. 2000. 如果有其他方式存储这些数据的顺序,请告诉我!

标签: php mysql


【解决方案1】:

是的,有:

INSERT INTO tbl2 (id,text) VALUES(LAST_INSERT_ID(),'text');

参见 MySQL 文档here

【讨论】:

  • 谢谢,这就是我要找的。​​span>