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

Cómo crear una restricción de clave externa con la opción ON DELETE SET NULL en SQL Server - Tutorial de SQL Server / TSQL, parte 81

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), no se debe eliminar de la tabla principal (tabla de restricción de clave externa), sino que el valor se debe actualizar a nulo.

Solución:

Podemos usar ON DELETE SET NULL con la definición de restricción de clave externa para implementar el requisito anterior.
Vamos a hacerlo usando 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 SET NULL
    )

    --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)
 
 
 Verifique los datos en las tablas usando Seleccionar consulta 
Cómo crear una restricción de clave externa con ON DELETE SET NULL en SQL Server


Eliminemos la fila de la tabla referenciada (tabla de columna de clave principal) y verifiquemos si todavía existen registros en la tabla principal (tabla de restricción de clave externa) y el valor de la columna se actualizó a nulo.
    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1

Cómo utilizar la opción ON DELETE SET NULL con restricción de clave externa en SQL Server

Como podemos ver, el registro se elimina de la tabla de referencia (tabla de columna de clave principal) pero aún está presente en la tabla principal (tabla de restricción de clave externa) pero el valor se actualiza a Nulo como se esperaba.

Video de demostración:cómo crear una restricción de clave externa con la opción ON DELETE SET NULL en SQL Server