sql >> データベース >  >> RDS >> Sqlserver

SQLServerでONUPDATECASCADEを使用して外部キー制約を作成する方法-SQLServer/TSQLチュートリアルパート79

    シナリオ:

    以前の投稿では、デフォルト設定の外部キー制約があり、外部キー制約の参照列として使用されている参照テーブルの列の値を更新しようとすると、エラーが発生することを学びました。この状況を処理する複数の方法について説明しました。このリンクを確認してください。
    外部キー制約には、カスケードアクションを設定するオプションがあり、カスケード更新を使用して外部キー制約を作成できます。
    [カスケード設定の更新]を使用する場合、参照テーブルの値を更新すると、親テーブル(外部キーテーブル)列の値も更新されます。
    このシナリオをテストしてみましょう。指定されたスクリプトを使用して、外部キー関係を持つ2つのテーブルdbo.Customerとdbo.Ordersを作成します

    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)
     
     
     select query 
    を使用して、テーブル内のデータを確認しましょう。
    SQLServerで更新カスケードを使用して外部キー制約を作成する方法


    dbo.CustomerテーブルのCustomerIdでupdateステートメントを実行し、Customer_idのdbo.Ordersの列値も更新されるかどうかを確認しましょう。
        update dbo.Customer
        set Customerid=100
     
     テーブルのデータをもう一度確認しましょう
    SQLServerで外部キー制約を使用した更新カスケードを有効にする方法

    ご覧のとおり、dbo.Orders.Customer_id列でも値が更新されています。


    ビデオデモ:SQLServerでONUPDATECASCADEを使用して外部キー制約を作成する方法
    1. MariaDBでのUNIX_TIMESTAMP()のしくみ

    2. MariaDB LOCALTIMESTAMP()の説明

    3. SqlCommandを再利用しますか?

    4. データベースを削除できません