sql >> Base de Datos >  >> RDS >> Sqlserver

Cómo crear una restricción de clave externa con ON UPDATE CASCADE en SQL Server - Tutorial de SQL Server / TSQL Parte 79

Escenario:

En publicaciones anteriores, aprendimos que si tenemos una restricción de clave externa con la configuración predeterminada e intentamos actualizar el valor en la columna en la tabla de referencia que se usa como columna de referencia en la restricción de clave externa, obtenemos un error. Discutimos varias formas de manejar la situación, consulte este enlace.
La restricción de clave externa proporciona la opción para configurar la acción en cascada, podemos crear la restricción de clave externa con la actualización en cascada.
Si se utiliza la configuración de actualización en cascada, cuando actualicemos el valor en la tabla referenciada, también actualizará el valor en la columna de la tabla principal (tabla de clave externa).
Probemos este escenario. Cree dos tablas dbo.Customer y dbo.Orders con una relación de clave externa mediante un script determinado

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)
 
 
 Verifiquemos los datos en las tablas usando select query
Cómo crear una restricción de clave externa con actualización en cascada en SQL Server


Ejecutemos nuestra instrucción de actualización en CustomerId en la tabla dbo.Customer y veamos si también actualiza el valor de la columna en dbo.Orders para Customer_id.
    update dbo.Customer
    set Customerid=100
 
 Revisemos los datos nuevamente en nuestras tablas 
Cómo habilitar la actualización en cascada con restricción de clave externa en SQL Server

Como podemos ver, el valor también se actualiza en la columna dbo.Orders.Customer_id.


Demostración en video:Cómo crear una restricción de clave externa con ON UPDATE CASCADE en SQL Server