您目前已離線,請等候您的網際網路重新連線

當您建立 FOREIGN KEY 條件約束的時,就會發生 1785年的錯誤訊息可能會造成多重串聯路徑

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:321843
徵狀
當您建立 FOREIGN KEY 條件約束時,可能會收到下列錯誤訊息:
伺服器: 已郵件 1785年資料表 'table2' 上的層級 16 狀態 1 第 1 行簡介 FOREIGN KEY 條件約束 'fk_two' 可能會造成循環或多重串聯路徑。無動作或 ON UPDATE 否動作指定 ON DELETE 或修改其他 FOREIGN KEY 條件約束。 伺服器: 訊息 1750,層級 16,狀態 1,行 1 無法建立條件約束。請參閱先前的錯誤。
發生的原因
因為在 SQL Server 資料表不能出現一次以上清單中的所有串聯參考動作由一個 DELETE 或 UPDATE 陳述式所啟動的您會收到這個錯誤訊息。比方說串聯參考動作的樹狀結構必須只有一個路徑特定的資料表串聯參考動作樹狀目錄上。
其他可行方案
如果要解決這個問題,不要建立將在串聯參考動作的清單中建立一個以上的路徑,可在表格的外部索引鍵。

您可以執行數種方法的參考完整性。宣告性參考完整性 (DRI) 是最基本的方式,但並也是最有彈性的方式。如果您需要更多的彈性,但是您仍想較高程度的完整性,您可以使用觸發程序來代替。
其他相關資訊
下列範例程式碼是一個範例會產生錯誤訊息在 FOREIGN KEY 建立嘗試:
Use tempdbgocreate table table1 (user_ID integer not null primary key, user_namechar(50) not null)gocreate table table2 (author_ID integer not null primary key, author_namechar(50) not null, lastModifiedBy integer not null, addedby integer notnull)goalter table table2 add constraint fk_one foreign key (lastModifiedby)references table1 (user_ID) on delete cascade on update cascadegoalter table table2 add constraint fk_two foreign key (addedby)references table1(user_ID) on delete no action on update cascadego--this fails with the error because it provides a second cascading path to table2.alter table table2 add constraint fk_two foreign key (addedby)references table1 (user_ID) on delete no action on update no actiongo-- this works.				

參考

如需詳細資訊請參閱 SQL Server 2000 線上叢書 》 中的 「 階層式參考完整性條件約束 」 主題。

警告:本文為自動翻譯

內容

文章識別碼:321843 - 最後檢閱時間:11/02/2007 10:14:14 - 修訂: 3.4

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtzh
意見反應