У меня есть таблица SQL называется [Content], которая имеет столбцы, как:SQL Каскадное удаление с несколькими столбцами
- ID PrimaryKey, UniqueIdentifier, не нулевой
- Файл UniqueIdentifier, не нулевой
- FileHighResolutionID uniqueidentifier, not null
- FileHighRe solutionProID UniqueIdentifier, а не нулевой
- FileVectorID UniqueIdentifier, а не нулевой
- ThumbnailID UniqueIdentifier, а не нулевой
Первое значение столбца автоматически сгенерированный. Остальные пять значений столбцов ссылаться на ID столбец таблицы называется [Файл]
При удалении строки из [Содержание], Я хотел бы также удалить строки из [Файл], где [Файл]. [ID] соответствует значение в [Содержание]. [Файл], [Содержание]. [HighResolutionID] и т.д. и т.п.
Поскольку это связано с кратному столбцов, каскадная операция удаления? Если да, то какой синтаксис.
Лучшее, что я мог придумать:
ALTER TABLE [dbo].[File]
ADD CONSTRAINT fk_content_file
FOREIGN KEY (FileID)
REFERENCES [dbo].[File] (ID)
ON DELETE CASCADE;
ALTER TABLE [dbo].[File]
ADD CONSTRAINT fk_content_filehighresolution
FOREIGN KEY (FileHighResolutionID)
REFERENCES [dbo].[File] (ID)
ON DELETE CASCADE;
ALTER TABLE [dbo].[File]
ADD CONSTRAINT fk_content_highresolutionpro
FOREIGN KEY (FileHighResolutionProID)
REFERENCES [dbo].[File] (ID)
ON DELETE CASCADE;
ALTER TABLE [dbo].[File]
ADD CONSTRAINT fk_content_vector
FOREIGN KEY (FileVectorID)
REFERENCES [dbo].[File] (ID)
ON DELETE CASCADE;
ALTER TABLE [dbo].[File]
ADD CONSTRAINT fk_content_thumbnail
FOREIGN KEY (ThumbnailID)
REFERENCES [dbo].[File] (ID)
ON DELETE CASCADE;
... но я не уверен, если это правильно. Я бы предпочел узнать более окончательно, чем потерять данные, которые были заполнены в приложении.
FWIW, я использую хранимую процедуру для такого рода вещей. Это усложняет мне выполнение чего-то невероятно глупого, и при этом он легко каскадирует данные, он позволяет проверять дополнительные критерии, пользователям может быть предоставлен доступ к SP без доступа к базовым таблицам, SP может выполнять дополнительную регистрацию. ... – HABO