你目前正处于脱机状态,正在等待 Internet 重新连接

当您创建 FOREIGN KEY 约束 1785年时发生的错误消息可能会导致级联的多个路径

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 321843
症状
当您创建 FOREIGN KEY 约束时,您可能会收到以下错误消息:
服务器: 在表"表 2"上的消息 1785,级别 16 状态 1 行 1 简介 FOREIGN KEY 约束 fk_two 可能导致周期或层叠的多个路径。无操作或 ON UPDATE NO 操作,ON DELETE 指定或修改其他 FOREIGN KEY 约束。 服务器: 消息 1750,级别 16 状态 1 行 1 无法创建约束。请参阅以前的错误。
原因
由于表不能在 SQL Server 中, 出现的所有级联引用操作开始一个 DELETE 或 UPDATE 语句的列表中的多个时间,您会收到此错误消息。例如对于树中的级联引用操作必须只有一个特定的表的一个路径在级联引用操作树上。
替代方法
要变通解决此问题,不要创建级联引用操作的列表中将创建一个表的多个路径的外键。

您可以实施参照完整性,以下几种方式。声明性引用完整性 (DRI) 是在最基本的方法,但它也是最灵活的方法。如果您需要更多的灵活性,但您仍然希望较高的完整性级别您可以使用触发器。
更多信息
下面的代码示例是一个外键创建尝试生成该错误消息的示例:
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 丛书联机。

警告:本文已自动翻译

属性

文章 ID:321843 - 上次审阅时间:11/02/2007 10:14:14 - 修订版本: 3.4

Microsoft SQL Server 2000 标准版, 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 2005 Server Enterprise, Microsoft SQL Server 2005 Express Edition, Microsoft SQL 2005 Server Workgroup

  • kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtzh
反馈