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

Как да създадете ограничение на външния ключ с ON DELETE CASCADE в SQL Server - SQL Server / TSQL урок, част 80

Сценарий:

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

Решение:

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

Нека изтрием реда от таблицата с препратки (таблица с колони с първичен ключ) и да видим дали той също така се изтрива от родителска таблица ( таблица с ограничения на външния ключ)

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


Проверете отново таблиците, за да видите дали записът е изтрит и от двете таблици поради ON Delete Cascade правило при ограничение на външния ключ.
Как да използвате ON Delete Cascade за изтриване на записи от множество таблици в таблица на SQL Server

Както можем да видим, че записите са изтрити и от двете таблици поради правилото ON DELETE CASCADE на ограничението на външния ключ.

Видео демонстрация:Как да създадете ограничение за външен ключ с ON DELETE CASCADE в 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. Как да проверите дали SQL базата данни е повредена – Решение за поправка на MDF файл

  2. Обединяване на стойности на колони в списък, разделен със запетая

  3. Преименуване на потребителски дефиниран тип данни в SQL Server (T-SQL)

  4. SQL Server:Направете всички главни букви в правилен регистър/заглавие

  5. Как да изключа дните на уикенда в заявка на SQL Server?