SQL函数:事务实例
伟少天地
事务就是负责把一系列操作看做一个独立的逻辑单元,这些操作要么同时成功,要么同时失败。下面是一个经典的例子:
create procedure TransferMoeny
(
@fromAccountNo varchar(50),-- 转出账号
@ToAccountNo varchar(50),--转入账号
@MoneyCount money--转账金额
)
as
--判断账号是否存在
if exists (select 1 from 帐户表 where 账号 = @fromAccountNo)
begin
if exists (select 1 from 帐户表 where 账号 = @ToAccountNo)
begin
--判断转出金额是否大于当前余额
if (select 当前余额 from 帐户表 where 账号 = @fromAccountNo) >= @MoneyCount
begin
--开始转账
begin transaction
insert into [存取记录表] ([账号],[存取类型], [存取金额]) values(@fromAccountNo, -1,@MoneyCount)
if @@error <> 0
begin
rollback transaction--发生错误则回滚事务,无条件退出l
return
end
&nbs
相关文档:
示例
A. 使用带有复杂 SELECT 语句的简单过程
下面的存储过程从四个表的联接中返回所有作者(提供了姓名)、出版的书籍以及出版社。该存储过程不使用任何参数。
USE pubs
IF EXISTS (SELECT name from sysobjects
WHERE name = 'au_info_all' AND type = 'P')
&nb ......
Truncate Logs for SQL Server 2008
I had previously posted how to Truncate Logs for SQL Server 2005. Unfortunately, this method does not work in SQL Server 2008. The reason is because the “WITH TRUNCATE_ONLY” command is no longer in SQL 2008. Assuming you run in full recovery mode, the n ......
PL/SQL-FOR UPDATE 与 FOR UPDATE OF的区别
url:http://hi.baidu.com/1413/blog/item/a521251f7e5993c4a686696b.html
数据库 oracle for update of 和 for update区别
select * from TTable1 for update 锁定表的所有行,只能读不能写
2 select * from TTable1 wher ......
若要收缩特定数据库的所有数据和日志文件,请执行 DBCC SHRINKDATABASE 命令。若要一次收缩一个特定数据库中的一个数据或日志文件,请执行 DBCC SHRINKFILE
命令。
若要查看数据库中当前的可用(未分配)空间量,请运行 sp_spaceused
。
可在进程中的任一点停止 DBCC SHRINKDATABASE 操作,任何已完成的工作都将保留。 ......
<!--
/* Font Definitions */
@font-face
{font-family:SimSun;
panose-1:2 1 6 0 3 1 1 1 1 1;
mso-font-alt:宋体;
mso-font-charset:134;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:3 135135232 16 0 262145 0;}
@font-face
{font-family:"Cambria Mat ......