Каскадное удаление в Sql Server 2008 - PullRequest
1 голос
/ 13 ноября 2011

Есть 2 таблицы

create table Category
(
   ID int primary key,
   title nvarchar(50)
)

create table Article
(
   ID int primary key,
   title nvarchar(50),
   body nvarchar(max),
   categoryId foreign key references Category(ID)
)

Можно ли удалить элемент из таблицы Category, у которого есть дочерние ключи в таблице Article на Category.ID?Я имею в виду в хранимой процедуре SQL.

Ответы [ 2 ]

2 голосов
/ 13 ноября 2011

Я думаю, вам нужно изменить схему (я использую SOMECOLUMNAME, потому что вы, похоже, удалили имя столбца из вашего примера):

create table Article (ID int primary key, title nvarchar(50), SOMECOLUMNNAME nvarchar(max), categoryId foreign key references Category(ID) ON DELETE CASCADE)

И тогда вы можете просто:

DELETE FROM Category WHERE ID = @ID

Если вы не можете редактировать схему, вы можете использовать эти операторы:

BEGIN TRANSACTION
DELETE FROM Article WHERE categoryId = @ID
DELETE FROM Category WHERE ID = @ID
COMMIT TRANSACTION
0 голосов
/ 16 ноября 2011

Проверьте это сообщение "Каскадное удаление в SQL Server"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...