• 触发器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

  • 相关阅读:
    js日期加减得到新的日期的自定义函数
    c# winform 一个可以用鼠标改变控件位置和大小的类,调用即可
    颜色英文代码全集
    你的Web系统有多少安全漏洞
    robots协议和禁止搜索引擎收录
    Linux下./configure错误详解
    c# winform 关于DataGridView的一些操作
    通过JSONP实现完美跨域
    tabs选项卡
    jQuery 1.4的十五大新功能实例精讲
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/1447146.html
Copyright © 2020-2023  润新知