这是我的问题:
我想在表中插入新行,但是其中已经有一些寄存器。如果我需要将此新行与已注册的行放在同一行,该怎么办?
例如:
我有此表与此行:
ID|Value 1 |Sample1 2 |Sample2 3 |Sample3
但是现在我想在Sample2所在的位置插入新行,因此表应如下所示:
ID|Value 1 |Sample1 2 |NewSample 3 |Sample2 4 |Sample3
有什么想法吗?
是的。如果您在某处有引用,请忘记更改主键(ID)。
而是添加一列(例如ViewOrder)为您显式处理此列:
ID|Value | ViewOrder 1 |Sample1 |1 5 |NewSample |2 2 |Sample2 |3 3 |Sample3 |4
查询以选择:
SELECT ID, Value, ViewOrder FROM yourTable ORDER BY ViewORDER
插入/更新 看起来像这样(当然,YourRowIndex是您希望在其中插入新行的索引):
UPDATE dbo.table SET VIEWORDER = VIEWORDER + 1 WHERE VIEWORDER >= @YourRowIndex ; SET IDENTITY_INSERT dbo.table ON INSERT dbo.table (Value, ViewOrder) VALUES (@YourValue, @YourRowIndex);