我想知道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?删除第一行意味着表中的所有其他行都必须更新。 –