2010-08-16 53 views
15

我正在使用Microsoft SQL Server 2005,並且通常對SQL來說比較新。SQL Server錯誤:「%」不是一個約束。無法刪除約束。查看以前的錯誤

數據庫「Information」中的兩個表「Resources」和「Group_Resources」之間存在關係。資源在Group_Resources中有一個外鍵「id」,名爲「resource_id」。兩者之間有一個外鍵約束「fk_gr_res_resources」。

我作爲數據庫所有者而建立,並具有完整的讀/寫/創建/刪除權限。

我要刪除的外鍵約束,所以我執行以下查詢:

ALTER TABLE [Information].[group_resources] DROP CONSTRAINT fk_gr_res_resources 

並收到以下錯誤:

'fk_gr_res_resources' is not a constraint. Could not drop constraint. See previous errors.

我很困惑,因爲它是一種約束,並且沒有拼寫錯誤。我是否要刪除這個不正確的?我是從不正確的表中刪除約束嗎?任何建議將不勝感激,&請不要阻止我:我是新來的SQL畢竟。

+2

您是否嘗試從其他表中刪除約束?這將回答你是否從正確的地方刪除它的問題。 – SqlRyan 2010-08-16 19:40:19

+0

是的 - 我已經嘗試從「gropus_resources」和「resources」中刪除約束。我仍然得到同樣的錯誤。感謝您的建議。 – amanda 2010-08-16 19:47:10

回答

21

您收到此錯誤:

Msg 3728, Level 16, State 1, Line 1 
'fk_gr_res_resources' is not a constraint. 
Msg 3727, Level 16, State 0, Line 1 
Could not drop constraint. See previous errors. 

由於FK約束不存在!

你肯定Information是正確的架構名稱,而不是dbo

1.此SQL將證明,FK不存在:

SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources' 

哎喲,我錯了,我原來的答案,這裏是SQL Server的正確語法:

ALTER TABLE <table_name> 
DROP CONSTRAINT <foreignkey_name> 

3.爲您的數據庫實例:

IF EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    DROP CONSTRAINT fk_gr_res_resources 
END; 

4.嘗試運行以下命令:

IF NOT EXISTS (SELECT * FROM sysobjects WHERE name = 'fk_gr_res_resources') 
BEGIN 
    ALTER TABLE Group_Resources 
    ADD CONSTRAINT fk_gr_res_resources 
    FOREIGN KEY (resource_id) 
    REFERENCES Resources(id) /* make sure Resources.id is a PRIMARY KEY */ 
END; 

5.然後試試這個,看看您是否仍然得到這個錯誤:

ALTER TABLE Group_Resources 
DROP CONSTRAINT fk_gr_res_resources 

其他的語法是爲MySQL,對不起:

ALTER TABLE <table_name> 
DROP FOREIGN KEY <foreignkey_name> 

感謝您糾正我的OMG小馬!

+0

感謝您的代碼示例。我把以下內容: 「ALTER TABLE DROP FOREIGN KEY 」 ,它給了這個錯誤: 「附近關鍵字 '洋' 的語法不正確。」 與第二個例子相同。 (順便說一句,所有的東西都拼寫正確,所以我不知道爲什麼我不斷收到錯誤:語法看起來是正確的。) – amanda 2010-08-16 19:58:42

+0

@OMG小馬:感謝您指出我的錯誤,而不是向下投票! – JohnB 2010-08-16 20:57:12

+0

這個答案解決了我的問題:) @JohnB&@OMG小馬:非常感謝您的建議! – amanda 2010-08-16 21:01:20