如何防止在SQL中删除查询

时间:2018-05-11 06:44:30

标签: sql entity-framework

我已经通过Entity Framework Code First Approach创建了一个数据库,我的应用程序已准备好并正在运行。问题是在创建数据库时我没有在Cascade Delete上变为“False”。 现在,如果我从一个表中删除通过外部引用另一个表的任何记录,那么包含已删除行的外键的所有记录都将从另一个表中删除。 实战演示:

假设我有一个名为Passenger的表:

ID     Name    CategoryID
1      ABC         1

这里的CategoryID是外键

这是类别表

ID    Name   
1     Gold

假设我在类别表

上运行查询
delete from Category where ID = 1

现在我的乘客表中的所有记录都被删除了。我想限制它。现在可以通过SQL吗?

1 个答案:

答案 0 :(得分:1)

我想 This is what you are looking for

alter TRIGGER customers_del_prevent
ON dbo.customers 
INSTEAD OF DELETE
AS
BEGIN
 insert into dbo.log
    values ('DELETE')   
 RAISERROR ('Deletions not allowed from this table (source = instead of)', 16, 1)   
 END

希望这会对你有所帮助。 :)