我是靠谱客的博主 勤劳洋葱,最近开发中收集的这篇文章主要介绍Sqlserver 触发器,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 做引入  删除 和修改 使用方式都一样  

最后

以上就是勤劳洋葱为你收集整理的Sqlserver 触发器的全部内容,希望文章能够帮你解决Sqlserver 触发器所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部