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

Como criar restrição de chave estrangeira com ON DELETE CASCADE no SQL Server - Tutorial SQL Server / TSQL Parte 80

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 também deve ser excluído da tabela pai (tabela de restrição de chave estrangeira).

Solução:

O SQL Server nos permite usar a configuração com restrição de chave estrangeira chamada On DELETE CASCADE. Se esta regra for implementada, sempre que o registro for excluído da Tabela Referenciada (Tabela de Coluna de Chave Primária), ele também será excluído da Tabela Pai (Tabela de Restrição de Chave Estrangeira).
Vamos testar este cenário com 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 CASCADE
    )

    --insert sample data
     insert into dbo.Customer 
    (CustomerId,FName, LName,SSN)
     values
    (1,'Aamir','Shahzad','000-000-00')
 
 
 Verifique os dados nas tabelas usando a consulta de seleção.
Como habilitar a regra ON Delete CASCADE com restrição de chave estrangeira no SQL Server

Vamos excluir a linha da Tabela Referenciada (Tabela de Coluna de Chave Primária) e ver se ela também exclui da Tabela Pai (Tabela de Restrições de Chave Estrangeira)

    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1


Verifique as tabelas novamente para ver se o registro foi excluído de ambas as tabelas devido à regra ON Delete Cascade na restrição de chave estrangeira.
Como usar ON Delete Cascade para excluir registros de várias tabelas na tabela do SQL Server

Como podemos ver que os registros são deletados de ambas as tabelas devido a regra ON DELETE CASCADE da Restrição de Chave Estrangeira.

Demonstração em vídeo:como criar restrição de chave estrangeira com ON DELETE CASCADE no SQL Server