У меня есть одна User
модель с первичным ключом id
.В настоящее время я моделирую Supervisor> Отношения пользователей с таблицей соединений, называемой user_supervisors
, которая имеет только два столбца, user_id
и supervisor_id
, оба из которых являются внешними ключами, ссылающимися на первичный ключ записи User
.
Возможно ли, что когда я удаляю пользователя (независимо от того, является ли он супервизором или нет), все записи, содержащие этого пользователя в таблице user_supervisors
, также удаляются?
Я пытался сделатьиспользование каскадных удалений sql-сервера, но не представляется возможным иметь каскадные удаления одновременно для внешних ключей user_id и supervisor_id.Я всегда сталкиваюсь с сообщением следующего содержания:
Knex: предупреждение - миграция не выполнена с ошибкой: CREATE TABLE [user_supervisors] ([user_id] int, [supervisor_id] int, CONSTRAINT [user_supervisors_pkey] PRIMARY KEY([user_id], [supervisor_id]), CONSTRAINT [user_supervisors_user_id_foreign] FOREIGN KEY ([user_id]) ССЫЛКИ [users] ([id]) ON УДАЛИТЬ CASCADE, CONSTRAINT [user_supervisors_supervisor_id_foreign] [FOREIGN][id]) ON DELETE CASCADE) - Не удалось создать ограничение или индекс.См. Предыдущие ошибки.
Для записи, которую я использую knex для запуска миграций моей базы данных Ниже приведен SQL, используемый при создании каждой таблицы, упомянутой выше:
CREATE TABLE [users]
(
[id] int identity(1,1) not null primary key
, [created_at] datetime
, [updated_at] datetime
, [email] nvarchar(255) not null
, [first_name] nvarchar(255)
, [last_name] nvarchar(255)
, [password] nvarchar(255) not null
, [company_id] int
, CONSTRAINT [users_email_unique] UNIQUE ([email])
, CONSTRAINT [users_company_id_foreign] FOREIGN KEY ([company_id]) REFERENCES [companies] ([id]) ON DELETE CASCADE
)
CREATE TABLE [user_supervisors]
(
[user_id] int
, [supervisor_id] int
, CONSTRAINT [user_supervisors_pkey] PRIMARY KEY ([user_id], [supervisor_id])
, CONSTRAINT [user_supervisors_user_id_foreign] FOREIGN KEY ([user_id]) REFERENCES [users] ([id]) ON DELETE CASCADE
, CONSTRAINT [user_supervisors_supervisor_id_foreign] FOREIGN KEY ([supervisor_id]) REFERENCES [users] ([id])
)