2014-03-07 83 views
0

我是微軟的新手SQL Server我不太喜歡DB,我有以下問題。爲什麼我不能從這張表中刪除記錄?

我必須刪除所有那些名爲VulnerabilityReference

表裏面的記錄,以便我執行該statment:

delete from VulnerabilityReference; 

但我得到這個錯誤信息,並沒有行被刪除構成了我表:

Msg 547, Level 16, State 0, Line 1 
The DELETE statement conflicted with the REFERENCE constraint "FK_AlertDocument_Reference_Reference". The conflict occurred in database "DB NAME", table "dbo.VulnerabilityAlertDocument_VulnerabilityReference", column 'VulnerabilityReferenceId'. 
The statement has been terminated. 

究竟是什麼意思?我是否需要刪除VulnerabilityAlertDocument_VulnerabilityReference表中的所有記錄,然後將記錄刪除到我的VulnerabilityReference

TNX

安德烈

回答

1

你試圖刪除的表中有它的主鍵在另一個表中。您必須先刪除(或設置爲空)另一個表格中的列,然後才能刪除。這被稱爲數據庫參照完整性。

您可以禁用約束(如果您有足夠的權限),但我建議您不要這樣做。

要刪除的鏈接在其他表中的所有記錄,你可以這樣做:

UPDATE VulnerabilityAlertDocument_VulnerabilityReference 
    SET VulnerabilityReferenceId = NULL 

如果AlertDocument表不允許該列空值,那麼你就需要DELETE所有VulnerabilityAlertDocument_VulnerabilityReference記錄等...或ALTER表允許NULL。確保你知道你要做什麼......

我假設VulnerabilityAlertDocument_VulnerabilityReference表中的列的名稱,您顯然需要使用正確的表和列名稱。

+0

從你看到我的數據庫上有一個VulnerabilityAlertDocument?在我以前的片段中,我對此沒有任何異議。 – AndreaNobili

+0

好的,我已更新我的答案以使用VulnerabilityAlertDocument_VulnerabilityReference表... –

1

這個錯誤是因爲你有相關的AlerDocument表中VulnerabilityReference記錄的ID。該錯誤警告您此問題,並且如果您不首先刪除相關記錄,則不能刪除此記錄。

我的意思是名爲FK_AlertDocument_Reference_Reference的關係中的表格 您在VulnerabilityAlertDocument_VulnerabilityReference和其他表之間存在關係。你可以去這張桌子找到關係,找到以FK開頭的名字。在此關係的屬性中,您將看到此關係中使用的其他表和列的名稱。如果你想要你可以創建一個圖表,然後放下這兩個表格,你將會以一種直觀的方式看到這種關係是如何構建的

+0

你的意思是VulnerabilityAlertDocument_VulnerabilityReference? – AndreaNobili

+0

我的意思是名爲FK_AlertDocument_Reference_Reference的關係中的表格 您在VulnerabilityAlertDocument_VulnerabilityReference和其他表之間存在關係。我已經用更多的信息更新了答案。 – Juan

相關問題