データベース スキーマを設計していて、1 つの部分で行き詰まっています。以下は私のスキーマの簡略版です。誰かが次のSQLの理由を説明してください:
CREATE TABLE Users (
UserID INT NOT NULL PRIMARY KEY,
FName VARCHAR(64) NOT NULL,
LName VARCHAR(64) NOT NULL,
UName VARCHAR(64) NOT NULL UNIQUE,
PWord CHAR(32) NOT NULL,
Role VARCHAR(13) NOT NULL
);
...
CREATE TABLE Sale (
SaleID INT NOT NULL PRIMARY KEY,
Book INT NOT NULL REFERENCES Books(BookID) ON DELETE NO ACTION,
Merchant INT NOT NULL REFERENCES Users(UserID) ON DELETE CASCADE,
Upload DATETIME NOT NULL,
Sold BIT NOT NULL,
Price DECIMAL(10, 2) NOT NULL,
Condition VARCHAR(9) NOT NULL,
Written BIT NOT NULL,
Comments VARCHAR(8000) NULL
);
...
CREATE TABLE Purchases (
PurchaseID INT NOT NULL PRIMARY KEY,
Buyer INT NOT NULL REFERENCES Users(UserID) ON DELETE CASCADE,
Merchant INT NOT NULL REFERENCES Users(UserID) ON DELETE NO ACTION,
Sale INT NOT NULL REFERENCES Sale(SaleID) ON DELETE CASCADE UNIQUE,
Time DATETIME NOT NULL
);
...このエラーが発生し、それを克服する方法:
Msg 1785, Level 16, State 0, Line 38
Introducing FOREIGN KEY constraint 'FK__Purchases__Sale__25869641' on table
'Purchases' may cause cycles or multiple cascade paths. Specify ON DELETE
NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
可能であれば、 ON DELETE CASCADE
for属性を保持したいと思います。Purchases.Sale
お時間をいただきありがとうございます。