0

次のように、SQL Server 2005 に 2 つのテーブルがあります。

表 A

  • ActionID (PK、int、null 以外)
  • ProgressID (一意の識別子、null 以外)
  • ReferID (一意の識別子、null 以外)
  • フィールド XYZ (varchar(50)、null 以外)
  • フィールド MNO (tinyint、null 以外)

表 B

  • TrackID (PK、int、null 以外)
  • ProgressID (一意の識別子、null 以外)
  • ReferID (一意の識別子、null 以外)
  • フィールド ABC (varchar(20)、null 以外)
  • フィールド EFG (日時、null 以外)

今、私は特定の質問があります:

両方の表のProgressIDは同じエンティティを参照しています。ProgressIDそして、テーブルBに値が存在する場合、テーブルAの 削除ができないように、一体的な関係を確立したいのですが、どうすればいいですか?

4

1 に答える 1

1

これには before delete トリガーをお勧めします。何かのようなもの

create trigger tr_tableA_progressId
on TableA for Delete
as 
    if exists
        (select 'true'
        from dbo.TableB
        where TableB.progressID = (select progressID
                                  from deleted d))

        BEGIN
            RAISERROR 'Cannot delete progressId exists in TableB'
            ROLLBACK TRAN
        End

あなたが望むものを強制する制約を知りません。

于 2011-02-01T17:03:05.333 に答える