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

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

    シナリオ:

    SQL Server開発者として作業している場合は、プライマリキーと外部キーの関係を使用して2つのテーブルを作成する必要があります。レコードを参照テーブル(主キー列テーブル)から削除するかどうかを設定して外部キー制約を作成する場合は、親テーブル(外部キー制約テーブル)からも削除する必要があります。

    解決策:

    SQL Serverでは、OnDELETECASCADEと呼ばれる外部キー制約の設定を使用できます。このルールを実装すると、参照テーブル(主キー列テーブル)からレコードが削除されるたびに、親テーブル(外部キー制約テーブル)からもレコードが削除されます。
    このシナリオを以下のスクリプトでテストしてみましょう。
    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')
     
     
     selectクエリを使用してテーブルのデータを確認します。
    SQLServerで外部キー制約を使用してONDeleteCASCADEルールを有効にする方法

    参照テーブル(主キー列テーブル)から行を削除し、親テーブル(外部キー制約テーブル)からも削除されるかどうかを確認しましょう

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


    テーブルを再度チェックして、外部キー制約のONDeleteCascadeルールが原因で両方のテーブルからレコードが削除されているかどうかを確認します。
    ONDeleteCascadeを使用してSQLServerテーブルの複数のテーブルからレコードを削除する方法

    ご覧のとおり、外部キー制約のON DELETE CASCADEルールにより、両方のテーブルからレコードが削除されています。

    ビデオデモ:SQLServerでONDELETECASCADEを使用して外部キー制約を作成する方法
    1. SQL標準委員会のPostgreSQLエージェント

    2. CentOS / RHEL7およびDebian8/9でMariaDB(マスタースレーブ)レプリケーションをセットアップする方法

    3. SQL Server(T-SQL)のデータベースメールのキューにあるメールアイテムの数を確認する

    4. SQL-各レコードのストアドプロシージャを呼び出す