0

重複の可能性:
外部キー制約により、サイクルまたは複数のカスケード パスが発生する可能性がありますか?

以下にリストされているテーブルの作成中に、次のエラーが発生します。

メッセージ 1785、レベル 16、状態 0、行 1 テーブル 'Faculty' に FOREIGN KEY 制約 'FKFacSupervisor' を導入すると、サイクルまたは複数のカスケード パスが発生する可能性があります。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の FOREIGN KEY 制約を変更します。メッセージ 1750、レベル 16、状態 0、行 1 制約を作成できませんでした。以前のエラーを参照してください。

CREATE TABLE Faculty
(
    FacNo               CHAR (11),
    FacFirstName        VARCHAR (50)CONSTRAINT FacFirstNameRequired NOT NULL,
    FacLastName         VARCHAR (50) CONSTRAINT FacLastNameRequired NOT NULL,
    FacCity             VARCHAR (50) CONSTRAINT FacCityRequired NOT NULL,
    FacState            CHAR (2) CONSTRAINT FacStateRequired NOT NULL,
    FacZipCode          CHAR (10) CONSTRAINT FacZipCodeRequired NOT NULL,
    FacHireDate         DATE,
    FacDept             CHAR (6),
    FacRank             CHAR (4),
    FacSalary           DECIMAL (10,2),
    FacSupervisor       CHAR (11), 
CONSTRAINT PKFaculty PRIMARY KEY (FacNo),
CONSTRAINT FKFacSupervisor FOREIGN KEY (FacSupervisor) REFERENCES Faculty
    ON DELETE SET NULL
    ON UPDATE CASCADE
)
4

1 に答える 1

0

このメッセージは、外部キー制約 FKFacSupervisor を作成できないことを示しています。この制約により循環または複数のカスケード パスが発生する可能性があるためです。つまり、制約により、ある行の更新または削除によって別の行が更新または削除され、その結果、最初の行が更新または削除されるという状況が発生する可能性があります。メッセージには、考えられる解決策も説明されています。ON DELETE NO ACTION または ON UPDATE NO ACTION を指定するか、他の制約を変更してください。スキーマと予想される使用パターンを知ることによってのみ、これらのオプションのどれが最適かを判断できます。

于 2012-10-02T03:00:34.640 に答える