SqlServer触发器的使用
来源:互联网 发布:怎样改淘宝密码 编辑:程序博客网 时间:2024/05/16 13:05
首先:说明一个触发器使用的场景。
1.服务器0001上的Employee表负责存储公司所有员工的最新数据,新员工入职、员工更换部门以及员工离职等信息都存在该表中。
2.由于业务需求,公司新上了一个OA系统,为了确保系统正常平稳运行且不影响公司其他服务器,所以OA系统就部署在了0002服务器上。
3.OA系统需要公司员工的最新信息,但是远程连接频繁调取0001服务器上的Employee表会影响到0001服务器的运行,而且OA系统需要员工最新的基础信息(姓名、工号、部门、在职状态)以及添加一些自定义的员工信息,信息存在EmpInfo表中。
基于以上场景,考虑使用触发器来完成。即在0001服务器上Employee表添加触发器来对0002服务器上的EmpInfo表进行更新操作。
步骤1:分析需要建立的触发器的类型
新员工入职,Emoloyee表会新增数据,Insert触发器。
员工更换部门,Employee表会更新数据,Update触发器。
员工离职,Employee表会删除数据(一般不会删除数据,但是为了下面有关删除情况的触发器操作,所以这里作此假设),Delete触发器。
步骤2:在0001服务器上建立0002服务器的远程连接
因为要对0002服务器的EmpInfo表进行增删改操作,所以需要先建立远程连接,脚本如下:
exec sp_addlinkedserver 'server0002', ' ', 'SQLOLEDB ', '192.168.0.1'
exec sp_addlinkedsrvlogin 'server0002', 'false ',null, 'sa', '123456'
步骤3:编写触发器脚本
Insert触发器:
create trigger trigger_sync_userdata_inserton Employee for insertasbegin--对EmpInfo进行批量插入操作insert server0002.dbo.EmpInfo select * from insertedendgo
Update触发器:
create trigger trigger_sync_userdata_updateon Employee for updateasbegin--对EmpInfo进行批量更新操作update a set a.Dept=b.Dept,a.Statues=b.Statuesfrom server0002.dbo.EmpInfo ainner join inserted b on a.EmployeeNo= b.EmployeeNoendgo
Delete触发器:
create trigger trigger_sync_userdata_deleteon Employee for deleteasbegin--对EmpInfo进行批量删除操作delete from server0002.dbo.EmpInfo where EmployeeNo in (select EmployeeNo from deleted)endgo
如上所示:三种触发器已经建好,当0001服务器的Employee表的数据进行增删改的时候,对应的0002服务器的EmpInfo表的数据也会对应的进行增删改操作。
备注:
1.插入操作(Insert)
Inserted表有数据,Deleted表无数据
2.更新操作(Update)
Inserted表有数据(新数据),Deleted表有数据(旧数据)
3.删除操作(Delete)
Inserted表无数据,Deleted表有数据
- SQLServer触发器的使用
- sqlserver触发器的使用
- SqlServer触发器的使用
- sqlserver触发器的使用
- SqlServer中触发器的使用
- SqlServer中触发器的使用 .
- SqlServer触发器的基本使用
- sqlServer 的触发器的使用基础
- sqlserver 使用触发器级联添加的代码
- 触发器的创建及使用(sqlserver 2005)
- 触发器的创建及使用(sqlserver 2005)
- sqlserver触发器使用举例
- SQLServer 触发器使用实例
- SQLServer 触发器使用实例
- SQLSERVER的触发器
- sqlserver的触发器练习
- 使用SQLServer Audit来监控触发器的启用、禁用情况
- sqlserver 插入之前的触发器
- java基础--String
- Hibernate注解(一)之@GeneratedValue
- 美食地图-这里有
- spark spark-commit 出现内存不够的问题
- 蚂蚁金服未来智慧城市:打造新空间_·_新治理_·_新生活
- SqlServer触发器的使用
- 故事板
- 指针和数组
- 前端问题解析
- FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:Direct3D11
- python对象引用_一切都是对象
- Cleaning Robot development note
- “代码雨”纯HTML源码实现及效果
- 在html中使用Vue 路由嵌套-实现数据请求