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

複合主キーSQL関係

    コンポジットがある場合 主キー、次にすべて それを参照する外部キー制約は、すべての列を使用する必要があります 複合主キーの。

    だからあなたの場合 - TableTwo 必須 参照 TableOne(ReportID, Date)

    これを回避する唯一の方法は、UNIQUE INDEX を作成することです。 TableOne (ReportID) で - 次に、その一意の制約のみへの外部キー参照を作成できます。

    しかし、ここで疑問が生じます:なぜ ReportID ではないのですか? すでに一意である場合は、主キーのみ (UNIQUE INDEX を配置できるため) NULL (複合 PK の一部であるため) ?

    ステップ 1:UNIQUE INDEX を作成する :

    CREATE UNIQUE NONCLUSTERED INDEX UIX_TableOne ON dbo.TableOne(ReportID);
      

    ステップ 2:TableTwo から外部キーを作成する :

    ALTER TABLE dbo.TableTwo
    ADD CONSTRAINT FK_TableTwo_TableOne
    FOREIGN KEY(ReportID) REFERENCES dbo.TableOne(ReportID)
      


    1. node-postgresデータベースの作成

    2. SQL Server(T-SQL)でユーザーのデフォルトのデータベースメールプロファイルを変更する方法

    3. 警告:ヘッダー情報を変更できません-ヘッダーはすでにエラーによって送信されています

    4. 自動インクリメントされたID列の問題