sql - SQL触发器防止单行删除
问题描述
我有一张表,其中有一行数据,我不希望任何人删除它。表名称是 ProjectInProcessData。我想确保 ID 为 6050 的数据无法删除。我怎样才能做到这一点?
解决方案
Create Trigger [dbo].[triggerPreventDeleteFormula]
ON [dbo].[AHSC_Project_InprocessData]
INSTEAD OF DELETE
AS
BEGIN
IF EXISTS(
SELECT *
FROM deleted d
where d.AHSC_Project_InprocessData_ID = '6610' or d.AHSC_Project_InprocessData_ID = '6666'
)
BEGIN
ROLLBACK;
RAISERROR('Can not delete this record: this record contains default formula',16,1);
END
ELSE
BEGIN
DELETE [AHSC_Project_InprocessData]
WHERE EXISTS (Select * from deleted d where d.AHSC_Project_InprocessData_ID = [AHSC_Project_InprocessData].AHSC_Project_InprocessData_ID)
END
END
推荐阅读
- php - 动态文件介绍 SQL 查询
- javascript - 使用文件类型的缓冲区中的文件类型
- java - Android Room Java Inner Join with Count
- sql - SQL中的XML PATH是否有替代方案
- android - android studio 无法识别设备上当前安装的 apk(is)
- android - 如何在 Firebase 聊天应用中实现消息可见功能
- python - 如何仅从 excel 文件中过滤出那些具有我在代码中提到的特定单词的评论?
- java - 将 Float 添加到 long 会使值减小
- android - 画布旋转后更改 RectF 的坐标
- sql-server - 删除表前的 T-SQL 提示