Sql-Server-2005
無法添加外鍵,因為它們存在 但它們不存在!
我有一個難題。我正在重新設計一個 sqlserver 2005 數據庫,並在此過程中嘗試糾正 tblUsers、tblUserRoles 和 tblRoles 之間的簡單查找表缺陷(tblUserRoles 有自己的 pk 欄位)。
在嘗試進行此更改時,外鍵關係被刪除並重新創建,但事實並非如此。
每當我嘗試:
ALTER TABLE [dbo].[tblUserRoles] ADD CONSTRAINT [Relationship26] FOREIGN KEY ([UserID]) REFERENCES [dbo].[tblUsers] ([UserID]) go ALTER TABLE [dbo].[tblUserRoles] ADD CONSTRAINT [Relationship27] FOREIGN KEY ([RoleID]) REFERENCES [dbo].[tblRoles] ([RoleID]) go
我得到:
Msg 547, Level 16, State 0, Line 230
ALTER TABLE 語句與 FOREIGN KEY 約束“Relationship26”衝突。衝突發生在數據庫“AhelpDev”、表“dbo.tblUsers”、列“UserID”中。消息 547,級別 16,狀態 0,第 232 行 ALTER TABLE 語句與 FOREIGN KEY 約束“Relationship27”衝突。衝突發生在數據庫“AhelpDev”、表“dbo.tblRoles”、列“RoleID”中。
但是當我:
ALTER TABLE [dbo].[tblUserRoles] Drop CONSTRAINT [Relationship26] go ALTER TABLE [dbo].[tblUserRoles] Drop CONSTRAINT [Relationship27] go
我得到:
Msg 3728, Level 16, State 1, Line 236 'Relationship26' is not a constraint. Msg 3727, Level 16, State 0, Line 236 Could not drop constraint. See previous errors. Msg 3728, Level 16, State 1, Line 238 'Relationship27' is not a constraint. Msg 3727, Level 16, State 0, Line 238 Could not drop constraint. See previous errors.
當我執行時:
select * from sys.Foreign_keys where name in ('relationship26', 'relationship27')
它不返回任何記錄。我被難住了,我求助於你!
我什至試圖複製數據庫,看看我能不能把它留在後面……我不能!
我期待著你的回答。
您無法添加約束,
tblUserRoles
因為此表中的數據已經違反了您嘗試添加的約束。a) 仔細檢查參考值中的所有
UserID
值tblUserRoles``UserID``tblUsers
tblRoles
b) 對和執行上述操作RoleID
。c) 正如我想像的那樣,以上兩個都將返回不在引用表中的記錄,您需要在添加外鍵之前清理數據
d) 為你的外鍵命名一些有用的東西!如果我來處理你的數據庫,我怎麼知道是什麼
Relationship26
意思?!