『QQ:1353814576』

Sqlserver数据库Insert触发器创建语句怎么写


Sqlserver Insert 触发器语句实现表的实时备份

概念: 触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。

触发器和存储过程的区别: 触发器与存储过程的区别是运行方式的不同,触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行而存储过程需要用户,应用程序或者触发器来显示地调用并执行。


关于触发器这块 以往开发经历因为用上的机会不多,多数用不到少数可能用到的因为赶工也被自己用其他的方式替代了,所以也就没认真去关注过这一块的用法。 近期负责的项目需要实现一个功能,在不改变现有主体业务的情况实现新业务分支,数据源结构和主业务一模一样的,可以认为是同一套数据两个地方分开用但又要保持两边一致,且不能改变现有的业务结构,数据来源也是一对一的无法通过部署新的程序来实现。思来想去最终采用触发器的方式 实现副本数据库的形式copy到副本表 执行其他业务,在保证了数据实时性的同时也缓解主表的数据查询压力。

以下是实现 两张相同的表A和B 向A表写入数据的同时也往B插入同样的数据 的触发器sqlserver的写法

--创建一个名为InsertDataTigger的Insert触发器 
create trigger InsertDataTigger
on dbo.A
for insert
as 
---往B表插入当前新增的数据
  insert into dbo.B(字段1,字段2,字段3,字段4)
  select 字段1,字段2,字段3,字段4 from Inserted
end

当同一台服务器可以实现跨库操作