我想知道SQL Server(即T-SQL語言)是否有這樣做的自然方式,或者如果我必須編寫奇特的約束/觸發器。如何維護
假設我有一個表
RebuplicanCandidates
===================================
Id | Name | ByteIndex
===================================
1 | 'Marco Rubio' | 0
2 | 'Jeb Bush' | 1
3 | 'Donald Trump' | 2
4 | 'Ted Cruz' | 3
,我刪除JebBush:
DELETE FROM [RepublicanCandidates] WHERE [Id]=2
然後,我希望表像
RebuplicanCandidates
===================================
Id | Name | ByteIndex
===================================
1 | 'Marco Rubio' | 0
3 | 'Donald Trump' | 1
4 | 'Ted Cruz' | 2
注意,ByteIndex
列洗牌。
然後,如果我插入一個候選人
INSERT INTO [RepublicanCandidates] (Name) VALUES ('CarlyFiorina')
表變得
RebuplicanCandidates
===================================
Id | Name | ByteIndex
===================================
1 | 'Marco Rubio' | 0
3 | 'Donald Trump' | 1
4 | 'Ted Cruz' | 2
5 | 'Carly Fiorina' | 3
ehm ....插入的行發生了什麼? – Lamak
@Lamak哎呀,你去吧 –
爲什麼你必須存儲一個沒有間隙的ByteIndex?刪除第一行意味着表中的所有其他行都必須更新。 –