sql >> Databáze >  >> RDS >> Sqlserver

Jak vytvořit omezení cizího klíče pomocí ON UPDATE CASCADE v SQL Server - SQL Server / Výukový program TSQL, část 79

Scénář:

V předchozích příspěvcích jsme se dozvěděli, že pokud máme omezení cizího klíče s výchozím nastavením a pokusíme se aktualizovat hodnotu ve sloupci v referenční tabulce, který se používá jako referenční sloupec v omezení cizího klíče, dostaneme chybu. Probrali jsme několik způsobů, jak situaci řešit, podívejte se prosím na tento odkaz.
Omezení cizího klíče poskytuje možnost nastavit akci Kaskádování, můžeme vytvořit omezení cizího klíče pomocí Kaskádové aktualizace.
Pokud je použito nastavení Kaskádové aktualizace, když aktualizujeme hodnotu v referenční tabulce , aktualizuje se také hodnota ve sloupci nadřazené tabulky (Tabulka cizích klíčů).
Pojďme otestovat tento scénář. Vytvořte dvě tabulky dbo.Customer a dbo.Orders se vztahem cizího klíče pomocí daného skriptu

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)
 
 
 Zkontrolujeme data v tabulkách pomocí výběrového dotazu
Jak vytvořit omezení cizího klíče pomocí kaskády aktualizací na serveru SQL


Pojďme spustit naše prohlášení o aktualizaci pro CustomerId v tabulce dbo.Customer a uvidíme, zda také aktualizuje hodnotu sloupce v dbo.Orders pro Customer_id.
    update dbo.Customer
    set Customerid=100
 
 Znovu zkontrolujeme data v našich tabulkách 
Jak povolit kaskádové aktualizace s omezením cizího klíče na serveru SQL

Jak vidíme, hodnota je aktualizována také ve sloupci dbo.Orders.Customer_id.


Video ukázka:Jak vytvořit omezení cizího klíče pomocí ON UPDATE CASCADE na SQL Server
  1. Použití funkcí password_hash a password_verify PHP 5.5

  2. Jak používat mysql JOIN bez podmínky ON?

  3. Existuje způsob, jak vybrat, aniž by došlo k zamykání v MySQL?

  4. Jak mohu vložit více řádků do oracle s hodnotou sekvence?