sqlserver 触发器实例

实例1:update

USE [数据库名称]
GO
/****** Object: Trigger [dbo].[触发器名称] Script Date:
05/08/2014 12:40:25 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER
ON
GO
ALTER TRIGGER [dbo].[T_触发器名称] ON [dbo].[表名称] 
FOR
UPDATE
AS
DECLARE
@Id VARCHAR(32),
@remain_cost
DECIMAL(10,3),
@remain_flow DECIMAL(10,3),
@valid_time
DATETIME;

BEGIN
SET XACT_ABORT ON

BEGIN
TRANSACTION
--SELECT @Id = customer_no, @remain_cost = Balance,@remain_flow =
(MAX_VOLUME - USED_VOLUME) FROM INSERTED;
  --insert
openrowset(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘select * from
mysql_authon.Consumer ‘) values(@Id,......)
SELECT @Id = customer_no,
@remain_cost = Balance,@remain_flow = (MAX_VOLUME - USED_VOLUME) FROM
INSERTED;
-- SET @Id = (SELECT customer_no FROM INSERTED);
-- SET
@remain_cost = (SELECT Balance FROM INSERTED);
--SET @remain_flow = (SELECT
(MAX_VOLUME - USED_VOLUME) FROM INSERTED);

-- 查询对本地复制
--SET @sql =

  -- SET @type = (SELECT * FROM
OPENROWSET(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘SELECT UserType_id FROM ....
@Id‘))  
  -- SET @base_cost = (SELECT * FROM
OPENROWSET(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘SELECT Consumer_basecost FROM
.... @Id‘))  
  -- DELETE FROM
OPENROWSET(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘select * from ....= @Id
‘) 
  -- INSERT
openrowset(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘select * from
mysql_authon.Consumer ‘) values(@Id,@type,.....)
  INSERT INTO 表名称
VALUES(@Id,.....);
COMMIT TRANSACTION
   END

实例2:insert

USE [数据库名称]
GO
/****** Object: Trigger [dbo].[触发器名称] Script Date:
05/08/2014 12:47:46 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER
ON
GO
ALTER TRIGGER [dbo].[触发器名称] ON [dbo].[表名称] 
FOR
INSERT
AS
DECLARE
@Id VARCHAR(16),
@remain_cost
DECIMAL(10,3),
@remain_flow DECIMAL(10,3),
@valid_time
DATETIME;

BEGIN
SET XACT_ABORT ON
-- SET NOCOUNT ON added to
prevent extra result sets from
-- interfering with SELECT statements.

BEGIN TRANSACTION
  SELECT @Id = customer_no........ FROM
INSERTED;
 -- insert
openrowset(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘select * from
mysql_authon.Consumer ‘) values(@Id.....)
-- 将数据插入到插入用户临时表
  INSERT
INTO dbo.transfer_data_insert_temp2 VALUES(@Id.....);
COMMIT
TRANSACTION
-- Insert statements for trigger here
END

实例3 :delete

USE [数据库名称]
GO
/****** Object: Trigger [dbo].[触发器名称] Script Date:
05/08/2014 12:51:21 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER
ON
GO
ALTER TRIGGER [dbo].[触发器名称] ON [dbo].[表名称] 
FOR
DELETE
AS
DECLARE
@Id VARCHAR(16);
BEGIN
SET XACT_ABORT
ON
-- SET NOCOUNT ON added to prevent extra result sets from
--
interfering with SELECT statements.
BEGIN TRANSACTION
SELECT @Id =
customer_no FROM deleted;
 -- insert
openrowset(‘MSDASQL‘,‘smysql‘;‘root‘;‘123456‘,‘select * from
mysql_authon.Consumer ‘) values(@Id,....)
-- 将数据插入到插入用户临时表
  INSERT
INTO dbo.表名称 VALUES(@Id);
COMMIT TRANSACTION
-- Insert statements for
trigger here
END

sqlserver 触发器实例

时间: 2025-01-08 15:00:03

sqlserver 触发器实例的相关文章

SQL触发器实例(下)

1 基本语法: 2 Create Trigger [TriggerName] 3 ON [TableName] 4 FOR [Insert][,Delete][,Update] 5 AS 6 --触发器要执行的操作语句. 7 Go 8 9 注意: 10 触发器中不允许以下 Transact-SQL 语句: 11 Alter DATABASE ,Create DATABASE,DISK INIT, 12 DISK RESIZE, Drop DATABASE, LOAD DATABASE, 13 L

触发器实例讲解

SQL触发器实例讲解(本文是来自百度文库) 备注:本人建了一个站特价汇,我想记录每个商品的点击量,然后按照点击量来牌名商品,想要提高效率,所以必须得用触发器,下面是本人在百度文库中的找到的学习资料,分享下给大家. 定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程. 常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 我为什么要使用触发器?比如,这么两个表: Create T

SQL触发器实例讲解

定义: 何为触发器?在SQL Server里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序.触发器是一个特殊的存储过程.       常见的触发器有三种:分别应用于Insert , Update , Delete 事件. 我为什么要使用触发器?比如,这么两个表: Create Table Student(              --学生表         StudentID int primary key,       --学号         ....        )

一次SQLSERVER触发器编写感悟

背景:BOSS须要我写一个工厂採集端到服务器端的数据同步触发器,数据库採用的是sqlserver2008 需求:将多台採集机的数据同步到server中,假设採集端数据库与server数据库连接失败则将数据保存到记录表中 前期思路:从採集端创建server端的数据库链接,通过採集端的insert,update触发.同一时候往远程表写入 问题:因为初始接触sqlserver.对sqlserver触发器了解不深.查阅一些资料后写出了满足正常情况下(连接服务器数据库正常)的触发器. create tri

SQLServer触发器

触发器的作用: 自动化操作,减少了手动操作以及出错的几率. 触发器是一种特殊类型的存储过程,它不同于前面介绍过的一般的存储过程. [在SQL内部把触发器看做是存储过程但是不能传递参数] 一般的存储过程通过存储过程名称被直接调用,而触发器主要是通过事件进行触发而被执行. 触发器是一个功能强大的工具,在表中数据发生变化时自动强制执行. 触发器可以用于SQL Server约束.默认值和规则的完整性检查,还可以完成难以用普通约束实现的复杂功能. 那究竟何为触发器?在SQL Server里面也就是对某一个

SqlServer2008--建立触发器实例

 http://www.cnblogs.com/caishuhua226/archive/2012/12/11/2813227.html SqlServer2008--建立触发器实例 一﹕ 触发器是一种特殊的存储过程﹐它不能被显式地调用﹐而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约`束. 二﹕ SQL Server为每个触发器都创建了两个专用表﹕Inserted表和Deleted表.这两个表. 一﹕ 触发器是一种特殊的存储过程﹐它不能

oracle触发器实例

8.1 触发器类型 8.1.1 DML触发器 8.1.2 替代触发器 8.1.3 系统触发器 8.2 创建触发器 8.2.1 触发器触发次序 8.2.2 创建DML触发器 8.2.3 创建替代(INSTEAD OF)触发器 8.2.3 创建系统事件触发器 8.2.4 系统触发器事件属性 8.2.5 使用触发器谓词 8.2.6 又一次编译触发器 8.3 删除和使能触发器 8.4 触发器和数据字典 8.5 数据库触发器的应用举例 触发器是很多关系数据库系统都提供的一项技术.在ORACLE系统里,触发

SqlServer——触发器

一:触发器基本知识  触发器是一种特殊的存储过程,但没有接口(输入输出参数),触发器是引发它们的事务的一部分,因为SqlServer自动将引发它们的SQL语句和触发器作为一个隐式事务,因此当触发器正确执行后,事务才认为是完整的,触发器也可已在触发器内部通过 rollback tran 来回滚事务,当触发的SQL语句是隐式事务时,只回滚引发触发器的SQL语句和触发器:是显式事务时,将撤销从最外层 begin tran 开始的所有操作.所以触发器通常用来实现对表实施复杂的完整性约束和强制业务规则,它

SQLServer 触发器入门

阅读目录 一:触发器的优点 二:触发器的作用 三:触发器的分类 四:触发器的工作原理 五:创建触发器 六:管理触发器 概念:   触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,当对一个表进行操作( insert,delete, update)时就会激活它执行.触发器经常用于加强数据的完整性约束和业务规则等. 触发器可以从 DBA_TRIGGERS ,U