CREATE TABLE [clients] (
id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT PK___CLIENTS#id
PRIMARY KEY NONCLUSTERED,name NVARCHAR(250) NOT NULL
CONSTRAINT UQ___CLIENTS#name
UNIQUE (name)
);
CREATE TABLE [contacts] (
id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT PK___CONTactS#id
PRIMARY KEY NONCLUSTERED,client_id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT FK___CONTactS#client_id___CLIENTS#id
FOREIGN KEY REFERENCES [clients] (id)
ON DELETE CASCADE
ON UPDATE CASCADE,name NVARCHAR(250) NOT NULL
CONSTRAINT UQ___CONTactS#name$client_id
UNIQUE (name,client_id)
);
CREATE TABLE [addresses] (
id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT PK___ADDRESSES#id
PRIMARY KEY NONCLUSTERED,client_id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT FK___ADDRESSES#client_id___CLIENTS#id
FOREIGN KEY REFERENCES [clients] (id)
ON DELETE CASCADE
ON UPDATE CASCADE,name NVARCHAR(250) NOT NULL
CONSTRAINT UQ___ADDRESSES#name$client_id
UNIQUE (name,client_id)
);
CREATE TABLE [contacts_addresses] (
contact_id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT FK___CONTactS_ADDRESSES#contact_id___CONTactS#id
FOREIGN KEY REFERENCES [contacts] (id)
ON DELETE CASCADE
ON UPDATE CASCADE,address_id UNIQUEIDENTIFIER NOT NULL
CONSTRAINT FK___CONTactS_ADDRESSES#address_id___ADDRESSES#id
FOREIGN KEY REFERENCES [addresses] (id)
ON DELETE CASCADE
ON UPDATE CASCADE,CONSTRAINT PK___CONTactS_ADDRESSES#contact_id$address_id
PRIMARY KEY (contact_id,address_id)
);
在创建参考表时出现错误...
在表“ contacts_addresses”上引入FOREIGN KEY约束“ FK ___ CONTactS_ADDRESSES#address_id ___ ADRESSES#id”可能会导致循环或多个级联路径。指定ON DELETE NO actION或ON UPDATE NO actION,或修改其他FOREIGN KEY约束。
无法创建约束或索引。
我认为这是因为两个父表都与CLIENTS表链接在一起,但是为什么那不可能呢?
-
例如我希望删除客户记录,然后再删除联系人以及客户地址。如果发生这种情况,引用的记录(匹配的contact_id和address_id)也应删除。
-
例如我希望删除一个联系人记录,然后删除所有带有该contact_id的引用记录。
-
例如我希望删除一个地址记录,然后删除所有带有该address_id的引用记录。
但是如何?