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

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

Cenário:

Nos posts anteriores, aprendemos que se tivermos Restrição de chave estrangeira com configuração padrão e tentarmos atualizar o valor na coluna na Tabela de Referência que é usada como Coluna de Referência na Restrição de Chave Estrangeira, obtemos um erro. Discutimos várias maneiras de lidar com a situação, verifique este link.
Restrição de chave estrangeira fornece a opção de definir a ação em cascata, podemos criar restrição de chave estrangeira com atualização em cascata.
Se as configurações de atualização em cascata forem usadas, quando atualizarmos o valor na tabela referenciada, ela também atualizará o valor na coluna da tabela pai (tabela de chave estrangeira).
Vamos testar este cenário. Crie duas tabelas dbo.Customer e dbo.Orders com Relação de Chave Estrangeira por determinado script

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 UPDATE CASCADE
    )


    --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)
 
 
 Vamos verificar os dados nas tabelas usando a consulta de seleção
Como criar restrição de chave estrangeira com atualização em cascata no SQL Server


Vamos executar nossa instrução de atualização em CustomerId na tabela dbo.Customer e ver se ela também atualiza o valor da coluna em dbo.Orders para Customer_id.
    update dbo.Customer
    set Customerid=100
 
 Vamos verificar os dados novamente em nossas tabelas 
Como habilitar a atualização em cascata com restrição de chave estrangeira no SQL Server

Como podemos ver que o valor também é atualizado na coluna dbo.Orders.Customer_id.


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