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