Cenário:
Você está trabalhando como desenvolvedor do SQL Server, você precisa criar duas tabelas com Relação de Chave Primária - Estrangeira. Você deseja criar uma restrição de chave estrangeira com a configuração se o registro for excluído da tabela referenciada (tabela de coluna de chave primária), ele não deve ser excluído da tabela pai (tabela de restrição de chave estrangeira), em vez disso, o valor deve ser atualizado para nulo.Solução:
Podemos usar ON DELETE SET NULL com definição de restrição de chave estrangeira para implementar o requisito acima.Vamos executar usando o script abaixo.
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
,Customer_id INT FOREIGN KEY REFERENCES
Customer(CustomerId) ON DELETE SET NULL
)
--insert sample data
insert into dbo.Customer
(CustomerId,FName, LName,SSN)
values
(1,'Aamir','Shahzad','000-000-00')
insert into dbo.Orders
(OrderItemName,OrderItemAmt,Customer_Id)
values ('TV',1,1) Verifique os dados nas tabelas usando Select query
![]() |
| Como criar restrição de chave estrangeira com ON DELETE SET NULL no SQL Server |
Vamos excluir a linha da Tabela Referenciada (Tabela de Coluna de Chave Primária) e verificar se os registros ainda existem na Tabela Pai (Tabela de Restrição de Chave Estrangeira) e o valor da coluna é atualizado para Nulo.
--Delete the Record from Referenced Table(PK Column Table)
Delete from dbo.Customer
where CustomerId=1 ![]() |
| Como usar a opção ON DELETE SET NULL com restrição de chave estrangeira no SQL Server |
Como podemos ver, o registro é excluído da Tabela Referenciada (Tabela de Coluna de Chave Primária), mas ainda está presente na Tabela Pai (Tabela de Restrição de Chave Estrangeira), mas o valor é atualizado para Nulo conforme o esperado.
Demonstração de vídeo:como criar restrição de chave estrangeira com a opção ON DELETE SET NULL no SQL Server

