我有一個表「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