Mensagem de erro 1785 ocorre quando cria uma restrição FOREIGN KEY que poderá provocar vários caminhos em cascata

Traduções de Artigos Traduções de Artigos
Artigo: 321843 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sintomas

Poderá receber a seguinte mensagem de erro quando cria uma restrição FOREIGN KEY:
Servidor: Erro 1785, 16 de nível 1 de estado, linha 1 fk_two' Introdução ao FOREIGN KEY restrição' na tabela 'tabela2' pode causar ciclos ou vários caminhos em cascata. Especificar ON DELETE não acção ou ON UPDATE não acção ou modifique outras restrições FOREIGN KEY. Servidor: Erro 1750, 16 de nível 1 de estado, linha 1 não foi possível criar restrição. Ver erros anteriores.

Causa

Esta mensagem de erro é apresentada porque no SQL Server, uma tabela não pode aparecer mais do que uma vez numa lista de todos os as em cascata referencial acções que são iniciados por um DELETE ou uma instrução UPDATE. Por exemplo, a árvore de acções referencial em cascata só deve ter um caminho para uma tabela específica na árvore da referencial acções em cascata.

Como contornar

Para contornar este problema, não crie uma chave externa que cria mais do que um caminho para uma tabela numa lista de acções referencial em cascata.

Pode impor a integridade referencial de várias formas. Integridade referencial declarativa (DRI) é a forma mais básica, mas também é a forma menos flexível. Se necessitar de mais flexibilidade, mas pretender continuar um elevado grau de integridade, pode utilizar accionadores.

Mais Informação

O código de exemplo seguinte é um exemplo de uma tentativa de criação de FOREIGN KEY que gera a mensagem de erro:

Use tempdb
go
create table table1 (user_ID integer not null primary key, user_name
char(50) not null)
go

create table table2 (author_ID integer not null primary key, author_name
char(50) not null, lastModifiedBy integer not null, addedby integer not
null)

go

alter table table2 add constraint fk_one foreign key (lastModifiedby)
references table1 (user_ID) on delete cascade on update cascade
go
alter table table2 add constraint fk_two foreign key (addedby)
references table1(user_ID) on delete no action on update cascade
go
--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 action
go
-- this works.
				

REFERÊNCIAS

Para mais informações, consulte o tópico "Em cascata de restrições de integridade referencial" no SQL Server 2000 Books Online.

Propriedades

Artigo: 321843 - Última revisão: 2 de novembro de 2007 - Revisão: 3.4
A informação contida neste artigo aplica-se a:
  • 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 2005 Server Enterprise
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL 2005 Server Workgroup
Palavras-chave: 
kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 321843

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com