USE 学生成绩
GO
IF EXISTS(SELECT name FROM sysobjects
WHERE name = 'TR_成绩表'and type='TR') ----判断是否存在相同名称的触发器,如果存在 删除同名触发器
DROP TRIGGER TR_成绩表
GO
CREATE TRIGGER TR_成绩表 --创建触发器
ON 成绩表
FOR INSERT, UPDATE --在执行INSERT ,UPDATE 语句时激活触发器
AS
DECLARE @score int
SELECT @score =成绩 FROM inserted
IF @score<0 OR @score>100
BEGIN
PRINT '请输入0~100内的成绩' --如果成绩小于0或者大于100 报错
ROLLBACK
END
GO
INSERT INTO 成绩表(学号,课程编号,成绩) --在数据表中插入一行错误数据,程序报错
VALUES('000002','019',-11)
GO
触发器分为DML触发器(可以防止恶意或者错误的INSERT,UPDATE,DELETE操作)、DDL触发器(防止数据表被误删除,主要响应CREATE,ALTER,DROP开头语句)
注意:DDL触发器只在执行到触发触发器语句时才会被激活。