Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да създадете ограничение на външния ключ с опция ON DELETE SET NULL в SQL Server - SQL Server / TSQL Урок, част 81

Сценарий:

Вие работите като разработчик на SQL Server, трябва да създадете две таблици с връзка първичен - външен ключ. Искате да създадете ограничение на външния ключ с настройка, ако записът ще бъде изтрит от таблица с препратки (таблица с колони с първичен ключ), не трябва да се изтрива от родителска таблица ( таблица с ограничения на външния ключ), вместо това стойността трябва да бъде актуализирана на Null.

Решение:

Можем да използваме ON DELETE SET NULL с дефиниция на ограничение на външния ключ, за да приложим горното изискване.
Нека изпълним с помощта на скрипта по-долу.
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)
 
 
 Проверете данните в таблиците, като използвате заявка за избор 
Как да създадете ограничение на външния ключ с ON DELETE SET NULL в SQL Server


Нека да изтрием реда от таблицата с препратки (таблица с първичен ключ) и да проверим дали записи все още съществуват в родителската таблица (таблица с ограничения на външния ключ) и стойността на колоната е актуализирана на Null.
    --Delete the Record from Referenced Table(PK Column Table)
    Delete from dbo.Customer
    where CustomerId=1

Как да използвате опцията ON DELETE SET NULL с ограничение на външния ключ в SQL Server

Както можем да видим, че записът е изтрит от таблицата с препратки (таблица с първичен ключ), но все още присъства в родителската таблица (таблица с ограничения на външния ключ), но стойността е актуализирана до Null, както се очаква.

Видео демонстрация:Как да създадете ограничение за външен ключ с опция ON DELETE SET NULL в SQL Server
  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 5 предимства на проактивното наблюдение на ефективността на базата данни

  2. POWER() Примери в SQL Server

  3. Начини за коригиране на SQL Server, открил I/O грешка, базирана на логическа последователност

  4. вземете нов идентификатор на SQL запис

  5. Какво да направите за типа на изчакване на ASYNC NETWORK IO?