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

  • 相关阅读:
    一元试用一个月的备份服务,把编剧的套路彻底堵死
    微软开源 PowerShell 并支持 Linux 和 OS X
    MySQL Database on Azure 支持 5.7 版本啦!
    python把字典写入excel之一例
    python字典无序?有序?
    字典转化为有序列表
    对xml文件的sax解析(增删改查)之二
    对xml文件的sax解析(增删改查)之一
    XML中CDATA和#PCDATA的区别
    dtd文件中写的引用实体被xml文件引用后无法在浏览器中显示的问题
  • 原文地址:https://www.cnblogs.com/xianqingzh/p/1447146.html
Copyright © 2011-2022 走看看