Mensaje de error 1785 se produce cuando se crea una restricción FOREIGN KEY que puede provocar múltiples rutas en cascada

Seleccione idioma Seleccione idioma
Id. de artículo: 321843 - Ver los productos a los que se aplica este artículo
Expandir todo | Contraer todo

En esta página

Síntomas

Cuando se crea una restricción FOREIGN KEY puede aparecer el siguiente mensaje de error:
Servidor: Mensaje 1785, nivel 16, estado 1, 1 Introducción A FOREIGN KEY restricción 'fk_two' en la tabla 'tabla2' podría producirse ciclos o múltiples rutas en cascada. Especifique ON DELETE NO ACTION o ON UPDATE NO ACTION o modifique otras restricciones FOREIGN KEY. Servidor: Mensaje 1750, nivel 16, estado 1, línea 1 no pudo crear restricción. Consulte los errores anteriores.

Causa

Recibe este mensaje de error porque en SQL Server, una tabla no puede aparecer más de una vez en una lista de todas las acciones de las referenciales en cascada que se inician mediante una instrucción UPDATE o DELETE. Por ejemplo, el árbol de las acciones referenciales en cascada sólo debe tener una ruta a una tabla determinada en el árbol de acciones referenciales en cascada.

Solución

Para evitar este problema, no cree una clave externa que creará más de una ruta a una tabla en una lista de acciones referenciales en cascada.

Puede exigir integridad referencial de varias maneras. Integridad referencial declarativa (DRI) es la forma más básica, pero también es la forma menos flexible. Si necesita más flexibilidad, pero aún desea un alto grado de integridad, puede utilizar los desencadenadores en su lugar.

Más información

En el siguiente ejemplo de código es un ejemplo de un intento de creación de FOREIGN KEY que genera la mensaje de error:

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.
				

REFERENCIAS

Para obtener más información, vea el tema "En cascada de restricciones de integridad referencial" en libros en pantalla de SQL Server 2000.

Propiedades

Id. de artículo: 321843 - Última revisión: viernes, 02 de noviembre de 2007 - Versión: 3.4
La información de este artículo se refiere 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
Palabras clave: 
kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 321843

Enviar comentarios

 

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