Sql Server 触发器

存储过程 是定义好的工具包,用于实现某一特定的功能

触发器是具有智能的工具包,当外界调条件改变时,符合触发器条件时,就自动运行,完成指定的任务

事件处理机制

作用:

·1 对数据库间的数据完整性做强制性约束
·2 对数据库中的表进行级联操作,可以自动触发操作的类型
·3 跟踪变化,对违法的操作进行回滚或撤销 保证数据库安全
·4 可以设定 错误返回的信息,增加程序的可维护性
·5 触发器可以调用更多的存储过程

分类:

1 数据操作语言触发器
依附于特定的表或者视图进行操作,当数据服务器有数据操作事件时,触发器代码执行
INSERT触发器 ,UPDATE触发器,DELETE 触发器
2 数据定义语言触发器
数据库出现了数据定义语言时,激活 DDL触发器,记录数据库架构进行某些更改

插入触发器

CREATE TRIGGER no_insert
ON xxxx
AFTER INSERT 
AS
BEGIN
RAISERROR("not allow add new record in this table",1,1);
ROLLBACK TRANSACTION
END

Delete 触发器

CREATE TRIGGER xxx_del
ON xs
AFTER DELETE
AS
BEGIN
  SELECT Id AS deleteONE FROM DELETED;
END


/...
执行
DELETE  FROM dbo.Grade
WHERE Id = 2;
CREATE TRIGGER xs_update
ON xs
AFTER UPDATE
AS
BEGIN
	SELECT 姓名 AS 更新后的姓名 FROM INSERTED;
	SELECT 姓名 AS 更新前的姓名 FROM DETETED;
END


//执行

UPDATE xs SET 姓名=‘何明’ WHERE 学号 =222; 

CREATE TRIGGER xs_instead
ON xs
INSTEAD OF INSERT
AS
BEGIN
	DECLARE @stu_credits INT;
	SELECT @stu_credits = (SELECT 总学分 FROM inserted)
	IF @stu_credits >30;
SELECT '总学分不符合要求' AS 失败原因;
END
DDL 触发器

CREATE TRIGGER safty
ON DATABASE
FOR DROP_TABLE,ALTER_TABLE
AS
BEGIN
	PRINT ‘当前数据库禁止更改删除操作’;
	ROLLBACK TRANSACTION;
END

在这里插入图片描述

CREATE TRIGGER update_limit on dbo.Grade
FOR UPDATE
AS
IF update(Id) AND EXISTS (SELECT * FROM inserted WHERE Id=22)
RAISERROR('can not update 22',16,1);
ROLLBACK TRANSACTION

在这里插入图片描述

//级联触发器

CREATE TRIGGER trigcategorydelete
ON xs
AFTEr DELETE
AS
BEGIN
DELETE xk WHERE 学号 =SELECT 学号 FROM deleted);
END
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值