zoukankan      html  css  js  c++  java
  • 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
    */

  • 相关阅读:
    Java 函数式编程—@FunctionalInterface----functional interface
    人月神话的博客
    如何度量复杂度
    泛型沉思录:创建模版与使用模版生成代码
    ioc与bean管理
    模式(思维)匹配是什么
    简析散光的成因,以及什么是散光的度数和轴位?
    概括是什么?
    思维与模型、世界观
    抽象、维度、层次与分析、综合
  • 原文地址:https://www.cnblogs.com/aoyihuashao/p/1623726.html
Copyright © 2011-2022 走看看