Sqlserver 触发器
程序员文章站
2022-05-09 09:17:00
...
Sqlserver 触发器
触发器是在对数据表 新增 修改 和删除的时候 进行一次自定义事件的处理
就是 比如 为新增一条数据 的时候 自动触发一个事件 来验证这个数据在别的表的关系 不然还得在应用里增加逻辑
数据库可以用触发器来实现
create trigger 触发器名 on 表名 for delete /insert /update as 触发器要执行的操作
举例子
成绩表 与科目表
触发器 在插入成绩表的时候 检测 科目表 是否有这个科目
create trigger Tri_insert on TScore for insert
as
declare @num int;
select @num = Count(*) from TSubject where subJectID in(select [subJectID] from inserted)
if @num<=0
begin
raiserror('非法插入',16,1);
rollback tran
end
执行后 会创建好一个触发器
执行 插入语句
失败了~~
换成 0003
成功~
代码解释
主要说:inserted 是一个前表 什么意思那 在执行插入的时候都会先存 在这个 inserted表里 inserted里包含(整个表的数据)
比如 如果0000001的学生已经存在了 我们有插入一个00000001的学生 我们怎么写触发器?显然我们要知道 0000001要有俩条以上
create trigger Tri_Student on TStudent for insert
as
declare @num int;
select @num = Count(*) from TStudent where [StudentID] in(select [StudentID] from inserted)
if @num>1
begin
raiserror('同一学生不能有俩条数据',16,1);
rollback tran
end
新增一行数据 发现 insert 不进去 也报了设定的错误
同理 删除 和修改 都有 这种表 前表
deleted 和updated
raiserror 固定格式使用
raiserror('同一学生不能有俩条数据',16,1);
讲一下 insert 做引入 删除 和修改 使用方式都一样
上一篇: php.ini安全配置详解
下一篇: sql2005 远程连接问题解决方法