Escenario:
Necesita truncar una tabla, pero cuando intenta ejecutar la tabla truncada tableName. Obtiene el siguiente error.Mensaje 4712, nivel 16, estado 1, línea 43
No se puede truncar la tabla 'SchemaName.TableName' porque una restricción FOREIGN KEY hace referencia a ella.
¿Cómo truncarías esta tabla?
Solución:
Como la tabla está involucrada en la relación de clave externa, primero debe eliminar la restricción de clave externa y luego ejecutar la instrucción de tabla truncada.Hagamos una demostración de este ejemplo, voy a crear dos tablas dbo.Customer y dbo.Orders y luego cree una restricción de clave externa en una de las columnas de Dbo.Orders a la tabla dbo.Customer.
USE YourDatabaseName GO CREATE TABLE dbo.Customer ( Customerid INT PRIMARY KEY ,FName VARCHAR(100) ,LName VARCHAR(100) ,SSN VARCHAR(10) ) CREATE TABLE dbo.Orders ( OrderId INT Identity(1, 1) ,OrderitemName VARCHAR(50) ,OrderItemAmt INT, CustomerId int ) --Create Foreign Key Constraint Alter table dbo.Orders with Nocheck Add Constraint Fk_CustomerId Foreign Key(CustomerId) References dbo.Customer(CustomerId)Ahora, si trato de truncar la tabla dbo.Orders, no arrojará ningún error. Pero cuando trato de truncar la tabla dbo.Customer, arrojará un error ya que dbo.Customer comienza las referencias por la restricción de clave externa.
![]() |
Cómo truncar una tabla a la que hace referencia la restricción de clave externa en SQL Server |
Podemos eliminar la restricción por ahora, truncar la tabla y luego volver a crear la restricción de clave externa.
Para encontrar las restricciones de clave externa en una tabla, puede usar la siguiente declaración.
SELECT * FROM sys.foreign_keys WHERE referenced_object_id = object_id('dbo.Customer')
![]() |
Cómo obtener el nombre de restricción de las tablas del sistema en SQL Server |
SELECT 'ALTER TABLE ' + OBJECT_SCHEMA_NAME(parent_object_id) +'.[' + OBJECT_NAME(parent_object_id) +'] DROP CONSTRAINT ' + name as DropFKConstraint FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Customer')
![]() |
Cómo eliminar la restricción de clave externa en la tabla en SQL Server |
Demostración en video:No se puede truncar la tabla porque está siendo referenciada por una restricción FOREIGN KEY