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

SQLServerの既存のテーブルに外部キー制約を追加する方法-SQLServer/TSQLチュートリアルパート68

    シナリオ:

    すでに2つのテーブルdbo.Customerとdbo.Ordersを作成しています。主キーは、dbo.CustomerテーブルのCustomerId列に作成されます。
    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
        )

    dbo.Ordersテーブルを変更し、dbo.CustomerからCustomerIdの外部キー制約を追加する必要があります。

    解決策:

    テーブルはすでに存在するため、以下のスクリプトを使用してdbo.Ordersテーブルを変更し、外部キー制約を追加できます。
    外部キー制約を作成する2番目のテーブルに列がすでに存在する場合は、次のようになります。以下のスクリプトを実行することをお勧めします。テーブルに列がないため、最初にdbo.OrdersテーブルにCustomerId列を追加します。この場合、列Nameは最初のテーブル列と一致する必要はありません。dbo.Customer.CustomerId
    --Add new column to Table in case you don't have    
    Alter table dbo.Orders
        Add CustomerId int
         
    --Add Foreign Key Constraint on Existing Table
        Alter table dbo.Orders
        Add Constraint Fk_CustomerId  
        Foreign Key(CustomerId) References dbo.Customer(CustomerId)
     
    複合列に外部キー制約を作成する 以下のスクリプトを使用して、複合列の外部キー制約を作成できます。
    USE YourDatabaseName
    GO
    
    CREATE TABLE dbo.Customer (
        Customerid INT Identity(1,1)
        ,FName VARCHAR(100) Not Null
        ,LName VARCHAR(100)
        ,SSN VARCHAR(10) Not Null,
        Constraint Pk_FName_SSN Primary Key (FName,SSN)
        )
    
    
        CREATE TABLE dbo.Orders (
        OrderId INT Identity(1, 1)
        ,OrderitemName VARCHAR(50)
        ,OrderItemAmt INT
        ,FirstName VARCHAR(100),
         SSN VARCHAR(10) Not Null
        )
     列は両方のテーブルにすでに存在するため、2番目のテーブルに列を追加する必要はありません。外部キー制約を作成するだけで済みます。以下のスクリプトを使用して、複合列の外部キー制約を作成できます。
         Alter table dbo.Orders
         Add Constraint Fk_Order_Customer_FName_SSN 
         FOREIGN KEY (FirstName,SSN) REFERENCES dbo.Customer(FName,SSN)
     
    テーブルの構文を記述します
    テーブルを変更しますdbo.YourTableNameAddConstraintConstraint_NameForeign Key(Column1FromYourTableName、Column2FromYourTable)References dbo.YourFirstTable(Column1FromPrimaryKey、Column2FromPrimaryKey)

    ビデオデモ:SQLServerの既存のテーブルに外部キー制約を追加する方法



    1. MacOSにXAMPPをインストールした後にMySQLサーバーに接続する方法

    2. PostgreSQLのSTRING_AGG()関数

    3. jdbcTimestampまたはDateを使用する場合のOracleとの無視できない実行プランの違い

    4. mysqldumpを使用して単一のMySQLテーブルを復元する方法は?