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

Cómo crear una restricción de clave externa con ON DELETE CASCADE en SQL Server - Tutorial de SQL Server / TSQL, parte 80

Escenario:

Está trabajando como desarrollador de SQL Server, necesita crear dos tablas con relación de clave externa primaria. Desea crear una restricción de clave externa con la configuración si el registro se eliminará de la tabla de referencia (tabla de columna de clave principal), también debe eliminarse de la tabla principal (tabla de restricción de clave externa).

Solución:

SQL Server nos permite usar la configuración con Restricción de clave externa llamada On DELETE CASCADE. Si se implementa esta regla, cada vez que se elimine un registro de la tabla de referencia (tabla de columna de clave principal), también se eliminará de la tabla principal (tabla de restricción de clave externa).
Probemos este escenario con el siguiente 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 DELETE CASCADE
    )

    --insert sample data
     insert into dbo.Customer 
    (CustomerId,FName, LName,SSN)
     values
    (1,'Aamir','Shahzad','000-000-00')
 
 
 Verifique los datos en las tablas usando la consulta de selección.
Cómo habilitar la regla ON Delete CASCADE con restricción de clave externa en SQL Server

Eliminemos la fila de la tabla referenciada (tabla de columna de clave principal) y veamos si también se elimina de la tabla principal (tabla de restricción de clave externa)

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


Vuelva a revisar las tablas para ver si el registro se eliminó de ambas tablas debido a la regla ON Delete Cascade en la restricción de clave externa.
Cómo usar ON Delete Cascade para eliminar registros de varias tablas en la tabla de SQL Server

Como podemos ver, los registros se eliminan de ambas tablas debido a la regla ON DELETE CASCADE de la restricción de clave externa.

Video de demostración:Cómo crear una restricción de clave externa con ON DELETE CASCADE en SQL Server