WEB开发网
开发学院数据库MSSQL Server 浅谈SQL Server 数据库之触发器 阅读

浅谈SQL Server 数据库之触发器

 2010-02-26 00:00:00 来源:WEB开发网   
核心提示: 触发器3_定义触发器的格式定义触发器的格式--=--Author:xugang--Createdate:2010-2-14--Description:定义触发器的精简格式--[]:可选{}必选--=createtrigger[schema_name.]--触发器所属架构trigger_name-

触发器3_定义触发器的格式

定义触发器的格式

-- =============================================
-- Author:        xugang
-- Create date: 2010-2-14
-- Description:    定义触发器的精简格式
--  [ ]:可选     { }必选
-- =============================================
create trigger [ schema_name. ] -- 触发器所属架构
               trigger_name     -- 触发器名称
on { table | view }       -- 触发器的表或视图
   [ with encryption ]    -- 加密dml触发器定义(后面详解)
{ for | after } 
   /* after:只有在触发它的SQL语句执行成功后才能激发。
             (只能对“表”定义after) */
    { insert,update,delete } 
as
    /* SQL语句... */
go

--查看当前数据库中的所有触发器

select * from sys.triggers

触发器4_insert 触发器SQL

insert 触发器

------------------ insert 触发器 ------------------
use TriggerDatabase
go
if exists(select * from sysobjects 
           where name='trig_insert_transInfo')
drop trigger trig_insert_transInfo
go
-- create trigger必须是批处理(go)的第一句
create trigger trig_insert_transInfo
on transInfo for insert
as
    declare @_transType   char(4),  --定义变量
            @_transMoney  money,
            @_cardID      char(10),
            @balance      money     --所剩余额
    -- 从inserted临时表中获取记录值
    select @_transType = transType,
           @_transMoney = transMoney,
           @_cardID = cardID 
           from inserted
    if(@_transType = '支取')
       update bank set currentMoney=currentMoney-@_transMoney
              where cardID = @_cardID;
    else 
       update bank set currentMoney=currentMoney+@_transMoney
              where cardID = @_cardID;
    --显示交易金额
    print '交易成功! 交易金额:'
          + convert(varchar(20),@_transMoney)
    --显示所剩余额
    select @balance = currentMoney from bank 
           where cardId = @_cardID
    print '卡号:'+@_cardID 
          + ' 余额:'+convert(varchar(20),@balance);
go
 
------------------ 测试触发器 ------------------
-- delete from transInfo
set nocount on --不显示T-SQL影响的记录行数
insert into transInfo(cardID,transType,transMoney)
             values('1001 0001','支取',200);
insert into transInfo(cardID,transType,transMoney)
             values('1001 0001','存入',10000);
--查看结果
select * from bank
select * from transInfo

上一页  1 2 3 4 5 6  下一页

Tags:SQL Server 数据库

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接