根据上面的简单介绍,我们举一个例子。
以下是一个银行系统的二张表:
银行卡信息表(卡号、银行名称、帐户名、密码、余额)
交易信息表(交易号、卡号、交易日期、交易类型、金额),交易类型分“存入”、“支取”和“转账“
创建一个触发器,该触发器可以根据交易信息表内容的变化而修改银行卡的余额信息
表信息如下:
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(数据操纵语言)事件,触发器则提供了对这些事件的响应...
SQL Server 2000 触发器是数据库管理系统中的一种重要特性,它允许数据库管理员在特定的数据库操作(如INSERT、UPDATE、DELETE)发生时执行预定义的T-SQL语句序列。触发器可以被看作是数据库的自动响应机制,类似于...
SQL Server Management Studio (SSMS) 提供了调试触发器的功能,可以在触发器执行过程中设置断点并检查变量值。 通过深入理解SQL Server 2008的触发器,开发者可以更好地控制数据库行为,实现复杂的业务逻辑和数据...
SQL Server 2000 触发器详解 SQL Server 2000 触发器是一种特殊的存储过程,类似于事件函数,可以在查询分析器里创建,也可以在表名上点右键->“所有任务”->“管理触发器”来创建。下面详细讲解如何制定自己的...
SQL Server 2005是微软推出的一款关系型数据库管理系统,它在企业级数据管理和分析中扮演着重要的角色。在SQL Server中,触发器是一种特殊的存储过程,它们在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时...
SQLServer2005_BC.msi 文件是这个向后兼容组件的安装程序,它包含了用于在更新的SQL Server环境中模拟SQL Server 2005环境的特定库和接口。安装此组件后,用户可以继续使用那些设计时依赖SQL Server 2005特性的应用...
总的来说,这个ATM机模拟系统利用了SQL Server 2005的强大功能,包括数据存储、查询处理、事务管理、安全性控制和性能优化,为用户提供了一个接近真实的银行服务体验。开发者通过分享这个项目,不仅展示了数据库管理...
2. 存储过程触发事件:通过在存储过程中调用动态SQL,可以模拟触发器的行为,但这种方法不推荐,因为可能引发安全风险和性能问题。 五、学习资源与实践 学习SQL Server 2005的触发器和存储过程,除了阅读《SQL ...
【SQL Server 2005触发器在数据库开发中的应用】 SQL Server 2005中的触发器是一种特殊类型的存储过程,它在数据库设计中扮演着至关重要的角色,尤其是在维护数据完整性和一致性方面。触发器是基于特定的表创建,并...
SQLServer视图触发器
SQL Server触发器是数据库管理系统中一种非常重要的特性,它允许开发者在特定的数据库操作(如INSERT、UPDATE或DELETE)发生时执行自定义的SQL代码。这些操作被称为触发事件,而触发器则是对这些事件的响应。理解并...
SQL Server 触发器语法详解 SQL Server 触发器是数据库管理系统中的一种机制,用于在执行某些操作时自动执行特定的操作。触发器可以帮助维护数据的一致性和完整性,提高数据库的安全性和可靠性。本文将详细介绍 SQL...
sqlserver 触发器 insert阿 一个关于触发器的小例子
触发器是SQL Server数据库管理系统中的一个重要概念,它是一种特殊类型的存储过程,主要用于在数据库中发生数据修改事件(如INSERT、UPDATE、DELETE)时自动执行预定义的SQL语句。触发器可以用来维护数据的完整性和...
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 ...