sql >> Base de Datos >  >> RDS >> Sqlserver

¿La restricción de clave externa puede causar ciclos o múltiples rutas en cascada?

SQL Server realiza un recuento simple de rutas en cascada y, en lugar de tratar de averiguar si realmente existen ciclos, asume lo peor y se niega a crear las acciones referenciales (CASCADE):puede y debe crear las restricciones sin las acciones referenciales. Si no puede modificar su diseño (o hacerlo comprometería las cosas), entonces debería considerar usar activadores como último recurso.

FWIW resolver rutas en cascada es un problema complejo. Otros productos SQL simplemente ignorarán el problema y le permitirán crear ciclos, en cuyo caso será una carrera para ver cuál sobrescribirá el valor en último lugar, probablemente por ignorancia del diseñador (por ejemplo, ACE/Jet hace esto). Entiendo que algunos productos SQL intentarán resolver casos simples. El hecho es que SQL Server ni siquiera lo intenta, juega de manera ultra segura al no permitir más de una ruta y al menos te lo dice.

Microsoft mismo recomienda el uso de activadores en lugar de restricciones FK.