的重排序我有一個表的複合主鍵:就地一個主鍵列
table MyTable
(
some_id smallint not null,
order_seq smallint not null,
--other columns
)
...其中some_id
和order_seq
組成的複合主鍵。 order_seq
列用於確定我的C#3.5/ASP.NET應用程序的其他部分中的顯示順序。
我設置了一個管理頁面,在這裏用戶可以洗牌周圍這些行,一次改變多行order_seq
值:
屏幕上的所有項目具有相同的some_id
。當用戶單擊提交時,新的order_seq
值應該被保存到數據庫。
我的問題是order_seq
是PK的一部分,所以將這些東西混洗的任務變得複雜。由於some_id
是相同的,我無法識別它們,除了order_seq
本身,它隨着我的變化而變化。此外,我必須確保order_seq
值保持唯一(推測具有某種臨時值)。
我最好的想法是使用某種內存集合來跟蹤我迄今爲止所做的更改。儘管如此,我卻遇到了麻煩。我怎樣才能一次執行多行的原地重新排序?無論是基於C#還是基於SQL的解決方案,我都可以。
編輯:不幸的是,我對錶格設計,和對數據庫一般控制有限的零控制。我將無法更改PK方案或引入任何新欄目。
它是否是一個複合PK? – Oded 2011-05-03 20:36:13
必須把它扔在那裏,那麼完全砍掉組合鍵,然後放下一個guid列,然後將它們用作查找而不是PK呢? – 2011-05-03 20:36:48
即使是身份專欄,也會讓你的生活更輕鬆。 – 2011-05-03 20:38:45