SQL触发器

触发器是指,当在指定的表上发生一个特定的操作事件时,将被调用的一个程序段。这个特定的操作事件也叫触发事件。当触发器所在的表有触发事件产生时,数据库服务器可不必考虑当前用户是谁而直接执行触发器程序。
      触发器定义语句的主要组成部分如下:
      触发器名;
      触发器所在的表的名称;
      触发动作时间;
      触发事件;
      触发事件的列清单;
      执行语句

编写一触发器时时检测USER表,当用户在线状态“State”由“在线”改变“离线”, 在MESSAGE表时插入一条记录
==============================
IF OBJECT_ID('USER') IS NOT NULL DROP TABLE
IF OBJECT_ID('MESSAGE') IS NOT NULL DROP TABLE
IF OBJECT_ID('TIG_USER') IS NOT NULL DROP TRIGGER TIG_USER
GO
CREATE TABLE (
ID INT,
VARCHAR(50),
STATE VARCHAR(10),
CREATETIME DATETIME
)
INSERT INTO
SELECT      1  ,'qxm','离线','2009-09-14 10:46:33' UNION ALL
SELECT      2  ,'ljh','在线','2009-09-14 10:48:34' UNION ALL
SELECT      3  ,'wfd','在线','2009-09-14 10:49:35'
CREATE TABLE (
ID INT,
VARCHAR(50),
SENDTIME DATETIME
)
GO
CREATE TRIGGER TIG_USER
ON
AFTER UPDATE
AS
IF UPDATE(STATE)
    INSERT SELECT D.id,D.NAME,D.CREATETIME
    FROM INSERTED I INNER JOIN DELETED D
ON I.ID=D.ID AND I.STATE='离线' AND D.STATE='在线'

GO
UPDATE SET STATE='离线'
SELECT * FROM
/*
3    wfd    2009-09-14 11:07:13.980
2    ljh    2009-09-14 11:07:13.980
*/

原文地址:https://www.cnblogs.com/aoyihuashao/p/1623726.html