Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Como criar restrição de chave estrangeira com a opção ON DELETE SET NULL no SQL Server - Tutorial SQL Server/TSQL Parte 81

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