Mensagem de erro 1785 ocorre quando você cria uma restrição FOREIGN KEY que pode causar vários caminhos em cascata

Traduções deste artigo Traduções deste artigo
ID do artigo: 321843 - Exibir os produtos aos quais esse artigo se aplica.
Expandir tudo | Recolher tudo

Neste artigo

Sintomas

Poderá receber a seguinte mensagem de erro quando você cria uma restrição FOREIGN KEY:
Servidor: Mensagem 1785, nível 16, estado 1, linha 1 restrição apresentando FOREIGN KEY 'fk_two' na tabela 'table2' pode causar ciclos ou vários caminhos em cascata. Especifique ON DELETE NO ação ou ON UPDATE NO ACTION ou modifique outras restrições FOREIGN KEY. Servidor: 1750, nível 16, estado 1, linha 1 mensagem não foi possível criar restrição. Consulte erros anteriores.

Causa

Você recebe essa mensagem de erro porque no SQL Server, uma tabela não aparece mais de uma vez em uma lista de todas as em cascata referencial ações que são iniciados por um DELETE ou uma instrução UPDATE. Por exemplo, a árvore de ações referencial em cascata só deve ter um caminho para uma determinada tabela na árvore de ações referencial em cascata.

Como Contornar

Para contornar esse problema, não crie uma chave externa que irá criar mais de um caminho para uma tabela em uma lista de ações referencial em cascata.

Você pode impor integridade referencial de várias maneiras. Integridade referencial declarativa (DRI) é a forma mais básica, mas também é a maneira menos flexível. Se você precisa de mais flexibilidade, mas você ainda deseja um alto grau de integridade, você pode usar disparadores.

Mais Informações

O código de exemplo a seguir é um exemplo de uma tentativa de criação 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 obter mais informações, consulte o tópico "Em cascata referencial restrições de integridade" nos manuais online do SQL Server 2000.

Propriedades

ID do artigo: 321843 - Última revisão: sexta-feira, 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 Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes 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