我有一个表“order_item”与 ORDER_ITEM_ID INT ORDER_ID INT如何删除行(不是自动递增)
主键后重新序列的id列是ORDER_ITEM_ID + ORDER_ID
所以order_item_id不是唯一的,也不是order_id,但两列的组合是唯一的。
如果客户增加了多个项目,他们为了我们能有一个表像这样
order_item_id order_id
------------------------
1 5
2 5
3 5
4 5
...如果客户随后删除ORDER_ITEM_ID 2再有就是序列中的差距。 order_item_id显示给客户参考,并在我们向供应商发送采购订单时使用。
有没有办法为特定的order_id重新排序order_item_id?我曾尝试以下,但总是收到重复键错误,并不断变化的第一个找到的项目编号为0而不是1
SET @i := 0;
UPDATE order_item
SET order_item_id = (@i := @i + 1)
WHERE order_id = 5
ORDER BY order_id, order_item_id
感谢您的任何援助。
你使用Oracle? MySQL的? – ClosureCowboy 2010-12-12 04:28:58
谢谢!由于“:=”的作业,我会假设Vijer使用MySql。如果SQL Server允许这些,我会考虑我的想法! – ClosureCowboy 2010-12-12 04:32:53
对不起,是的MySQL – Vijer 2010-12-12 05:04:29