根据上面的简单介绍,我们举一个例子。
以下是一个银行系统的二张表:
银行卡信息表(卡号、银行名称、帐户名、密码、余额)
交易信息表(交易号、卡号、交易日期、交易类型、金额),交易类型分“存入”、“支取”和“转账“
创建一个触发器,该触发器可以根据交易信息表内容的变化而修改银行卡的余额信息
表信息如下:
create table cardInfo
(
CardID char(10) primary key,
BankName varchar(20) not null,
UserName varchar(20) not null,
password varchar(20) not null,
Balance money not null
)
create table tradeInfo
(
TradeID int identity(1,1) primary key,
CardID char(10) references cardinfo(cardid),
TradeDate DateTime not null,
TradeMoney Money,
TradeType char(10)
)
--identity(1,1)
--代表主键自增长
--参数1,代表主键的初始值
--参数2,代表每次在原来基础增加多少
插入数据如下:
insert into cardinfo values
('123456','中国银行','哈密瓜','123456',100000)
有了以上的数据,我们开始设计一个存储过程来完成存钱、取钱、转账的操作
思路如下:
--交易信息类型
--1、存钱 2、取钱 3、转账
--TradeType
--存钱操作:insert --> 对银行卡的操作:update
--取钱操作:insert --> 对银行卡的操作:update
--转账操作:insert --> 对银行卡的操作:update已经存在的另一个卡更新
--生成一个交易流水号
存储过程代码:
create procedure trade_proc
@v_cardid char(10),
@v_trademoney money,
@v_tradetype char(10)
as
declare @a varchar(10)
set @a = rtrim(@v_cardid)
if not exists (select cardid from cardInfo where cardid = @a)
begin
print '你输入的卡号不存在,请重新输入'
end
else
begin
insert into tradeinfo (cardId,tradedate,trademoney,tradetype)
values (@a,getdate(),@v_trademoney,@v_tradetype)
end
触发器代码如下:
create trigger tradeinfo_trigger on tradeinfo
for insert
as
begin
declare @v_tradetype char(10) --获取交易类型
declare @v_trademoney money --获取交易的money
declare @v_cardid char(10) --银行卡的id
declare @v_Balance money --余额
set @v_tradetype=(select tradetype from inserted)
set @v_trademoney=(select trademoney from inserted)
set @v_cardid=(select cardid from inserted)
set @v_Balance=(select Balance from cardinfo where cardid = @v_cardid)
if @v_tradetype = '取钱' and @v_trademoney <= @v_Balance
begin
update cardinfo set Balance=@v_Balance-@v_trademoney where cardid=@v_cardid
end
else if @v_tradetype = '存钱'
begin
update cardinfo set Balance=@v_Balance+@v_trademoney where cardid=@v_cardid
end
else
begin
rollback transaction --如果操作失败(所有存钱、取钱过程终止,且数据不进行数据库中)
end
end
执行存储过程:exec trade_proc '123456',1000,'存钱'
执行结果:
123456 中国银行 哈密瓜 123456 101000.00
4 123456 2011-03-30 15:45:24.547 1000.00 存钱
分享到:
相关推荐
sqlserver2005触发器sqlserver2005触发器sqlserver2005触发器
在SQL Server 2005中,触发器是一种特殊的存储过程,它在特定的数据操作语言(DML)事件,如INSERT、UPDATE或DELETE发生时自动执行。触发器可以帮助实现复杂的业务规则和数据完整性,通过扩展SQL语句的功能,提供了...
### SQL Server 创建触发器实现远程服务器相应执行SQL语句 #### 概述 本文将详细介绍如何在SQL Server中创建触发器来实现当本地数据库发生数据插入时,在远程服务器上相应地执行SQL语句,实现数据同步。这通常用于...
SQL Server 2005中的触发器是一种数据库对象,它允许开发者在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时执行自定义的SQL代码。这些操作被称为DML(数据操纵语言)事件,触发器则提供了对这些事件的响应...
### SqlServer触发器调用WebService知识点详解 #### 一、SqlServer触发器简介 在了解如何通过Sql Server触发器调用WebService之前,我们首先需要对触发器有一个基本的认识。触发器是一种特殊的存储过程,它被定义...
SQL Server 2000 触发器是数据库管理系统中的一种重要特性,它允许数据库管理员在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时执行预定义的T-SQL语句序列。触发器可以被看作是数据库的自动响应机制,类似于...
SQL Server 2000 触发器详解 SQL Server 2000 触发器是一种特殊的存储过程,类似于事件函数,可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建。下面详细讲解如何制定自己的...
SQLServer2005_BC.msi 文件是这个向后兼容组件的安装程序,它包含了用于在更新的SQL Server环境中模拟SQL Server 2005环境的特定库和接口。安装此组件后,用户可以继续使用那些设计时依赖SQL Server 2005特性的应用...
总的来说,这个ATM机模拟系统利用了SQL Server 2005的强大功能,包括数据存储、查询处理、事务管理、安全性控制和性能优化,为用户提供了一个接近真实的银行服务体验。开发者通过分享这个项目,不仅展示了数据库管理...
2. 存储过程触发事件:通过在存储过程中调用动态SQL,可以模拟触发器的行为,但这种方法不推荐,因为可能引发安全风险和性能问题。 五、学习资源与实践 学习SQL Server 2005的触发器和存储过程,除了阅读《SQL ...
### SqlServer触发器详解与案例分析 #### 一、触发器概述 触发器是一种特殊类型的存储过程,它被定义为当特定的事件(如数据的插入、更新或删除)发生时自动执行。Sql Server 中的触发器可以用来强制业务规则或者...
在SQL Server中,触发器是一种特殊的存储过程,它在数据更改操作(如INSERT、UPDATE或DELETE)发生时自动执行。本示例展示了如何利用触发器来实现对多表视图的更新,具体涉及了以下几个关键知识点: 1. **触发器的...
SQL Server触发器是数据库管理系统中一种非常重要的特性,它允许开发者在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时执行自定义的SQL代码。这些操作被称为触发事件,而触发器则是对这些事件的响应。理解并...
SQL Server 触发器语法详解 SQL Server 触发器是数据库管理系统中的一种机制,用于在执行某些操作时自动执行特定的操作。触发器可以帮助维护数据的一致性和完整性,提高数据库的安全性和可靠性。本文将详细介绍 SQL...
《SQL Server 2005编程入门经典(第2版)》是一本深入浅出的教程,涵盖了数据库管理系统SQL Server 2005的核心概念和技术。本书的重点在于讲解存储过程和触发器,这两个是数据库开发中至关重要的组件,用于实现复杂的...
在SQL Server中,触发器是一种特殊的存储过程,它在数据库中的特定事件发生时自动执行,如数据插入、更新或删除操作。本视频讲解将深入探讨触发器的创建、编辑、修改及其功能,帮助用户更好地理解和应用这些技术。 ...
SQL Server 2005 SP4(Service Pack 4)是微软针对其关系型数据库管理系统SQL Server 2005发布的一个重要更新。这个服务包包含了大量的修复程序、安全更新和性能优化,旨在提高SQL Server 2005的稳定性和安全性。SP4...
Sql Server 2005 打开 Sql Server 2008 mdf 文件数据库转换是指将 Sql Server 2008 中的数据库文件(mdf 文件)转换为 Sql Server 2005 可以识别的格式,以便在 Sql Server 2005 中使用。这种转换过程需要使用 Sql ...
SQL Server 2005是微软公司推出的一款关系型数据库管理系统,主要应用于企业级的数据存储、管理和分析。作为X64版本,它专为64位操作系统设计,能够充分利用64位系统的硬件性能,提供更高效的数据处理能力。在本...