现在有三个表,分别是:category,news,comment
其中news表中的newsid是comment表中newsid关联的外键,category表中的cateid是news表中cateid关联的外键,现在想建一个存储过程按Category表中一个cateid来删除category中对应的一条数据,并连同news表中cateid对应数据删除,comment表中关联了news表中newsid那些数据也删除了,那么这个存储过程应该怎么写?触发器也可以!请高手帮助
其中news表中的newsid是comment表中newsid关联的外键,category表中的cateid是news表中cateid关联的外键,现在想建一个存储过程按Category表中一个cateid来删除category中对应的一条数据,并连同news表中cateid对应数据删除,comment表中关联了news表中newsid那些数据也删除了,那么这个存储过程应该怎么写?触发器也可以!请高手帮助
如果非要用存储过程来实现,可以这样:
CREATE PROC DELETERECORDS
(
@CategoryID as int
)
AS
BEGIN
BEGIN TRAN
DELETE FROM comment WHERE newsid IN (SELECT newsid FROM NEWS WHERE cateid =@CategoryID)
IF @@ERROR <> 0
ROLLBACK TRAN
ELSE
COMMIT TRAN
DELETE FROM category WHERE cateid =@CategoryID
IF @@ERROR <> 0
ROLLBACK TRAN
ELSE
COMMIT TRAN
END
add constraint 外键名
foreign key(字段名) references 主表名(字段名)
on delete cascade