【发布时间】: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. 如果有其他方式存储这些数据的顺序,请告诉我!