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)
);
Я получаю ошибку при создании справочной таблицы ...
Введение ограничения FOREIGN KEY 'FK ___ CONTACTS_ADDRESSES # address_id ___ ADRESSES # id' в таблице 'contacts_addresses' может привести к циклам или нескольким каскадным путям. Укажите ON DELETE NO ACTION или ON UPDATE NO ACTION или измените другие ограничения FOREIGN KEY.
Не удалось создать ограничение или индекс.
Я думаю, это потому, что обе родительские таблицы связаны с таблицей CLIENTS. , но почему это невозможно?
например, я хочу удалить запись клиента, затем следует удалить контакты, а также адреса клиента. В этом случае также должны быть удалены ссылочные записи (соответствующие contact_id & address_id).
например, если я хочу удалить запись контакта, то все ссылочные записи с этим contact_id должны быть удалены.
например, я хочу удалить запись адреса, тогда все записи, на которые есть ссылки с этим address_id, должны быть удалены.
Но как?