zoukankan      html  css  js  c++  java
  • 触发器3

     
    查看文章
     
    Sql Server 触发器(三)
    2009-04-15 10:00

    接(二)

    --针对[卷烟销售表],插入第三条测试数据,该数据中的卷烟品牌在 卷烟库存表中找不到对应。

    --触发器将报错。

    INSERT INTO 卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额)

    SELECT ’红河V8’,’某购货商’,10,60,600

    GO

    /*

    结果集

    服务器: 消息 50000,级别 16,状态 1,过程 T_INSERT_卷烟销售表,行 15

    错误!该卷烟不存在库存,不能销售。

    */

    --针对[卷烟销售表],插入第三条测试数据,该数据中的卷烟品牌在 卷烟库存表中库存为0

    --触发器将报错。

    INSERT INTO 卷烟销售表(卷烟品牌,购货商,销售数量,销售单价,销售金额)

    SELECT ’玉溪’,’某购货商’,10,30,300

    GO

    /*

    结果集

    服务器: 消息 50000,级别 16,状态 1,过程 T_INSERT_卷烟销售表,行 29

    错误!该卷烟库存小于等于0,不能销售。

    */

    --查询数据

    SELECT * FROM 卷烟库存表

    SELECT * FROM 卷烟销售表

    GO

    /*

    补充:

    1、本示例主要通过一个简单的业务规则实现来进行触发器使用的说明,具体的要根据需要灵活处理;

    2、关于触发器要理解并运用好 INSERTED DELETED 两个系统表;

    3、本示例创建的触发器都是 FOR INSERT ,具体的语法可参考:

    Trigger语法

    CREATE TRIGGER trigger_name

    ON { table | view }

    [ WITH ENCRYPTION ] --用于加密触发器

    {

    { { FOR | AFTER | INSTEAD OF } { [ INSERT ] [ , ] [ UPDATE ] }

    [ WITH APPEND ]

    [ NOT FOR REPLICATION ]

    AS

    [ { IF UPDATE ( column )

    [ { AND | OR } UPDATE ( column ) ]

    [ ...n ]

    | IF ( COLUMNS_UPDATED ( ) { bitwise_operator } updated_bitmask )

    { comparison_operator } column_bitmask [ ...n ]

    } ]

    sql_statement [ ...n ]

    }

    }

    4、关于触发器,还应该注意

    (1)DELETE 触发器不能捕获 TRUNCATE TABLE 语句。

    (2)、触发器中不允许以下 Transact-SQL 语句:

    ALTER DATABASE CREATE DATABASE DISK INIT

    DISK RESIZE DROP DATABASE LOAD DATABASE

    LOAD LOG RECONFIGURE RESTORE DATABASE

    RESTORE LOG

  • 相关阅读:
    Javascript的私有变量和方法、共有变量和方法以及特权方法、构造器、静态共有属性和静态共有方法
    Spring4整合Hibernate4出现的错误的解决
    Javascript类的创建
    Kettle学习总结(一)
    Kettle Excel导入数据到数据库
    Python 爬虫 2 (转)
    Js仿腾讯微博效果
    飘雪效果
    列表获取对应图片
    飞入购物车
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/1447146.html
Copyright © 2011-2022 走看看