if (object_id('proc_DeleteFile', 'P') is not null)
    drop proc proc_DeleteFile
 go
create  PROCEDURE proc_DeleteFile
(
    @id  nvarchar(40) , --删除的文件ID
 @pid nvarchar(40) ,--项目Id
 @comment  nvarchar(3800) --想历史记录表插入数据
)   
AS
begin
BEGIN TRANSACTION--开始事务

DECLARE @errorSun INT --定义错误计数器
SET @errorSun=0 --没错为0

DELETE FROM LPProjectDiscuss   WHERE    ElementID=CONVERT(uniqueidentifier, @id) ;--事务操作SQL语句删除讨论信息
SET @errorSun=@errorSun+@@ERROR --累计是否有错

DELETE FROM LPProjectFile   WHERE    LPProjectfileID=CONVERT(uniqueidentifier, @id); --事务操作SQL语句删除文件信息
SET @errorSun=@errorSun+@@ERROR --累计是否有错
insert into LPProjectHistory (HistoryID ,ID, [NewName], ProjectID, NewComment, UpdateTime)values
(
NEWID(),CONVERT(uniqueidentifier, @id), @comment, CONVERT(uniqueidentifier ,@pid),@comment,getdate()
)
SET @errorSun=@errorSun+@@ERROR --累计是否有错

IF @errorSun<>0
BEGIN
PRINT '有错误,回滚'
ROLLBACK TRANSACTION--事务回滚语句
END
ELSE
BEGIN
PRINT '成功,提交'
COMMIT TRANSACTION--事务提交语句
END
end

//--------------------------------------------------增加事务----------------------------------------------------------------------------------------------------------

if (object_id('proc_SaveDiscuss', 'P') is not null)
    drop proc proc_SaveDiscuss
 go

create  PROCEDURE proc_SaveDiscuss
(
 @LPProjectDiscussID nvarchar(36),--要插入的guid
 @DiscussName  nvarchar(100),    --讨论名称
 @DiscussContent nvarchar(2000),
 @ElementID nvarchar(36),
 @UserID nvarchar(36),
 @Status int,
 @CreateTime datetime
)   
AS
begin
BEGIN TRANSACTION--开始事务

DECLARE @errorSun INT --定义错误计数器
SET @errorSun=0 --没错为0
DECLARE @Read nvarchar(15)
set @Read ='增加了讨论'

INSERT INTO LPProjectDiscuss
( LPProjectDiscussID,
DiscussName,
DiscussContent,
ElementID,
UserID,
 [Status],
 CreateTime )
VALUES
(
CONVERT(uniqueidentifier,
 @LPProjectDiscussID),
 @DiscussName,@DiscussContent,
 CONVERT(uniqueidentifier,@ElementID),
 CONVERT(uniqueidentifier ,@UserID),
 @Status,
 @CreateTime
)
SET @errorSun=@errorSun+@@ERROR --累计是否有错

insert into LPProjectHistory
(
HistoryID ,
ID,
[NewName],
ProjectID,
NewComment,
UpdateTime,
Mark,
UserID,
CreateTime,
[Type]
 
 )
 values
(
NEWID(),
CONVERT(uniqueidentifier, @LPProjectDiscussID),
@DiscussName,
 CONVERT(uniqueidentifier,@ElementID),
 @Read+ @DiscussContent,
 ( SELECT dateadd(ms,0,DATEADD(dd, DATEDIFF(dd,0,getdate()), 0))),
 CONVERT(int, 0),
  CONVERT(uniqueidentifier ,@UserID),
 (select getdate()),
CONVERT(int, 0)

)
SET @errorSun=@errorSun+@@ERROR --累计是否有错

IF @errorSun<>0
BEGIN
PRINT '有错误,回滚'
ROLLBACK TRANSACTION--事务回滚语句
END
ELSE
BEGIN
PRINT '成功,提交'
COMMIT TRANSACTION--事务提交语句
END
end

exec proc_SaveDiscuss '193446A7-62B4-A418-DB38-02BB2800F9C2', '今天回家看病','打针','AF0DB0BE-C0EA-5F54-AA2B-79EBBE4C3080','FFBD2905-28E3-0347-FDC4-F94993D1C326',0, '2013-08-09 17:54:39.233'

-------------------------------------------------------------------------------修改的存储过程-------------------------------------------------------------------------

SQL 增加, 删除父子级带事务的存储过程的更多相关文章

  1. SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    SQL Server 2008 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过     存储过程 创建存储过程 use pubs --pubs为数据库 go create proc ...

  2. SQL Server 存储过程,带事务的存储过程(创建存储过程,删除存储过程,修改存储过

    存储过程 创建存储过程 use pubs --pubs为数据库 go create procedure MyPRO --procedure为创建存储过程关键字,也可以简写proc,MyPRO为存储过程 ...

  3. SQL Server中带事务的存储过程简单举例

    先来看一个概念: 数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行.那么在存储过程里添加事务,则可以保证该事务里的所 ...

  4. sql server 删除所有表、视图、存储过程

    如果由于外键约束删除table失败,则先删除所有约束:   --/第1步**********删除所有表的外键约束*************************/   DECLARE c1 curs ...

  5. sql快速删除所用表,视图,存储过程

    [http://www.th7.cn/db/mssql/2011-07-07/10127.shtml#userconsent#] 删除用户表 .select 'DROP TABLE '+name fr ...

  6. Sql增加,删除,修改列

    1. 查看约束条件 - MySQL: SELECT * FROM information_schema.`TABLE_CONSTRAINTS` where table_name = 'book'; - ...

  7. SQL语句复制父子级表数据

    原始表Book数据如下: id为自增长整数,text为内容,pid为上级IDid text pid1 第一层 02 数学 03 第二层 14 语文 15 第三层 36 英语 3…………………… 现要求 ...

  8. SQL Server 删除数据库所有表和所有存储过程

    场景: SQL Server中,需要删除所有表或所有存储过程时,手动的方式只能逐个进行删除,耗个人时间,所以想弄个语句来实现这样的需求.   如果由于外键约束删除table失败,则先删除所有约束: - ...

  9. SQL 增加或删除一列

    SQL 增加或删除一列 alter table tablename drop column columnname;alter table tabelname add columnname varcha ...

随机推荐

  1. Leetcode 212.单词搜索II

    单词搜索II 给定一个二维网格 board 和一个字典中的单词列表 words,找出所有同时在二维网格和字典中出现的单词. 单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中"相邻&q ...

  2. HDU 5025 状态压缩蛇+bfs+dp

    题目大意:孙悟空要找到一条花费时间最短的路径,路上为S的代表有蛇,经过需多花一分钟,其他情况下都是走过花费一分钟,但数字必须依次得到,最后到了唐僧处,可以经过也可以救出,救出前提是得到所有种类的钥匙 ...

  3. 莫比乌斯反演套路二--(n/d)(m/d)给提出来--BZOJ3529: [Sdoi2014]数表

    一个数表上第i行第j列表示能同时整除i和j的自然数,Q<=2e4个询问,每次问表上1<=x<=n,1<=y<=m区域内所有<=a的数之和.n,m<=1e5,a ...

  4. Memory Ordering in Modern Microprocessors

    Linux has supported a large number of SMP systems based on a variety of CPUs since the 2.0 kernel. L ...

  5. 18.9.22 noip模拟赛

    此题为找规律.期望100 实际100 #include<cstdio> #include<cstring> #include<iostream> #include& ...

  6. ETL增量单表同步简述_根据dateTime增量

    ETL增量单表同步简述 1. 实现需求 当原数据库的表有新增.更新.删除操作时,将改动数据同步到目标库对应的数据表. 2. 设计思路 设计总体流程图如下: 步骤简单说明: 1.设置job的执行属性,如 ...

  7. delphi的一些语法知识 以及参数传递问题,按引用方式传递参数,按值方式传递参数

    //delphi中exit,abort,break,continue 的区别 exit: 退出函数体abort: 遇到异常,安静处理,就是不显示不提示break: 退出当前循环体,包括for ,whi ...

  8. C#.NET 如何在系统变量中加入新的环境变量

    比如我要将C:\Windows\Microsoft.NET\Framework\v3.5这个目录加入环境变量 则在系统的环境变量中点击Path,编辑,然后加入一个分号";",然后粘 ...

  9. Mac OS X 10.10, Eclipse+ADT真机调试代码时,Device Chooser中不显示真机的解决方式

    Mac OS X 10.10的环境下.Eclipse+ADT,进行真机调试时,会出现一个问题. Device Chooser对话框里不显示真机设备,仅仅有又一次插拔数据线才干够. 经过測试.有两个暂时 ...

  10. Woody的逻辑游戏--怎样换轮胎

    题目:有一个做长途运输的司机要出发了,他用作运输的车是三轮车.轮胎的寿命是2万里,如今他要进行5万里的长途运输.计划用8个轮胎完毕运输任务,如何才干做到呢? 首先将轮胎从1-8依次编号,然后例如以下所 ...