¿No se puede truncar la tabla porque hace referencia a ella una restricción de CLAVE EXTRANJERA?
Usando MSSQL2005, ¿puedo truncar una tabla con una restricción de clave externa si primero trunco la tabla secundaria (la tabla con la clave principal de la relación FK)?
Sé que yo también puedo
- Utilice una
DELETE
cláusula sin dónde y luegoRESEED
la identidad (o) - Elimine la FK, trunque la tabla y vuelva a crear la FK.
Pensé que mientras truncara la tabla secundaria antes que la principal, estaría bien sin hacer ninguna de las opciones anteriores, pero aparece este error:
No se puede truncar la tabla 'TableName' porque una restricción FOREIGN KEY hace referencia a ella.
DELETE FROM TABLENAME
DBCC CHECKIDENT ('DATABASENAME.dbo.TABLENAME', RESEED, 0)
Tenga en cuenta que probablemente esto no sea lo que desearía si tiene millones de registros, ya que es muy lento.
Correcto; no se puede truncar una tabla que tenga una restricción FK.
Normalmente mi proceso para esto es:
- Deja las restricciones
- Trunca la mesa
- Recrea las restricciones.
(Todo en una transacción, por supuesto).
Por supuesto, esto sólo se aplica si el niño ya ha sido truncado. De lo contrario, tomo una ruta diferente, dependiendo completamente de cómo se ven mis datos. (Demasiadas variables para entrar aquí).
El cartel original determinó POR QUÉ es así; vea esta respuesta para más detalles.