Cenário:
Você precisa truncar uma tabela, mas quando tenta executar truncate table tableName. Você recebe o erro abaixo.Msg 4712, Level 16, State 1, Line 43
Não é possível truncar a tabela 'SchemaName.TableName' porque ela está sendo referenciada por uma restrição FOREIGN KEY.
Como você truncaria esta tabela?
Solução:
Como a tabela está envolvida no relacionamento de chave estrangeira, você precisa primeiro eliminar a restrição de chave estrangeira e depois executar a instrução truncate table.Vamos demonstrar este exemplo, vou criar duas tabelas dbo.Customer e dbo.Orders e, em seguida, crie uma restrição de chave estrangeira em uma das colunas de Dbo.Orders para a tabela 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) Agora, se eu tentar truncar a tabela dbo.Orders, não haverá erro. Mas quando tento truncar a tabela dbo.Customer, ele gera um erro, pois dbo.Customer é começar referências por restrição de chave estrangeira. ![]() |
| Como truncar uma tabela que é referência por restrição de chave estrangeira no SQL Server |
Podemos descartar a restrição por enquanto, truncar a tabela e, em seguida, recriar a restrição de chave estrangeira.
Para encontrar as restrições de chave estrangeira em uma tabela, você pode usar a instrução abaixo.
SELECT *
FROM sys.foreign_keys
WHERE referenced_object_id = object_id('dbo.Customer') ![]() |
| Como obter o nome da restrição das tabelas do sistema no 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') ![]() |
| Como eliminar a restrição de chave estrangeira na tabela no SQL Server |
Demonstração de vídeo:não é possível truncar a tabela porque ela está sendo referenciada por uma restrição FOREIGN KEY


