主键或唯一键失败是查找重复项,如果其中有空值,则需要先对它们进行排序。
例如MyTable(KeyField int not null)
当时给出
Select KeyField From MyTable
inner join (Select KeyField,Count() as NumberOfTimes Group By KeyField) Duplicates
Where NumberOfTimes > 1
然后你必须想出一些与他们有关的事情。删除或重新设置密钥。
外键只是一个外连接查询,其中键为空
例如给定MyTable (KeyField int not null, ForeignKeyField int not null)
然后
MyLookUpTable(LookUpkey int not null, Description VarChar(32) not null)
Select KeyField From MyTable
Left Join MyLookUpTable On MyTable.LookUpField = MyLookUpTable.LookUpKey
Where MyTable.LookUpField Is Null
同样,您必须决定如何处理它们。您可以删除它们,但这可能会有所帮助。一种方法是在查找表中插入“缺失”记录,抓住它的键,然后使用连接进行更新。所以给定密钥是 999
Update m
Set LookUpField = 999
From MyTable m
Left Join MyLookUpTable On m.LookUpField = MyLookUpTable.LookUpKey
Where m.LookUpField Is Null
现在你可以挖出 999 并在闲暇时处理它们。