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