2012-01-19 65 views
0

我有一個有兩個表的數據庫,PROCESS(PK Process_Id) and PROCESS_STAGE(PK Stage_Id, FK Process_Id)如何在Microsoft SQL Server Management Studio中實施關係型外鍵約束?

至少我覺得我已經設置 - 外鍵關係對話框我有

  • 外鍵基表:PROCESS_STAGE
  • 外鍵列:Process_Id
  • 主要/唯一密鑰基表:PROCESS,
  • 主要/唯一密鑰列:Process_Id

我還設置了強制複製並強制外鍵約束爲'是'。

但我仍然可以做以下的事情打破了這種關係:

  1. 刪除項目從過程具有不同於 PROCESS_STAGE引用

什麼我需要做的改正這個?

謝謝!

回答

1

嘗試使用SQL創建外鍵

ALTER TABLE PROCESS_STAGE WITH CHECK ADD 
    CONSTRAINT FK_PROCESSTAGE_PROCESS 
      FOREIGN KEY (Process_Id) REFERENCES PROCESS (Process_Id) 

如果仍然失敗,看看錶的模式/所有者:你可能有一個以上的表,你用錯了。例如:

  • dbo.PROCESS_STAGE
  • deed02392.PROCESS_STAGE
+0

我也試試這個@gbn,但我一直收到此錯誤: 消息547,級別16,狀態0,第1行 ALTER TABLE語句與FOREIGN KEY約束「FK_PROCESSTAGE_PROCESS」衝突。衝突發生在數據庫「A_A」,表「dbo.process」,列'Process_Id'。 我只在數據庫的表樹中看到名爲'dbo。*'的表,所以我想這意味着我應該使用正確的表? – deed02392

+0

@ deed02392:如果你只有dbo,那麼這很好。我懷疑你使用GUI時有同樣的錯誤。這將發出類似於我上面所做的SQL。你的FK失敗,因爲它永遠不會被創建 – gbn

+0

我不明白?它似乎暗示它不能創建一個,因爲它已經存在,但我沒有看到它的任何地方,如果它確實存在,那麼我不應該刪除破壞關係的記錄? – deed02392

相關問題