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.ID
で Article
テーブルの子キーを持つ項目を
Category
の表から削除することはできますか?私はSQLストアドプロシージャを意味します。
ベストアンサー
あなたのスキーマを変更する必要があると思います(あなたの例から列名を省略しているので、私は
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