在存储过程中对多个表进行操作的问题(希望得到帮助,谢谢!)

nnx 2003-05-27 10:20:38
要建一个存储过程,多个表进行操作,但是不知道怎么处理比较好。
需要执行的操作如下:
从A,B,C,D,E,F,G 表中,将符合条件的记录分别拷贝到A',B',C',D',E',F',G'表中,
然后再从A,B,C,D,E,F,G表中将相应的记录删除掉。
我想请问:
1)是所有表的记录拷贝完后,再开始删除每个表里的相关记录;还是每拷贝一个表的记录后,就将源表里的相关记录删掉,然后再进行下一个拷贝——删除操作?
2)我希望能保证数据的安全一致,即要么操作完全成功,要么就不操作,是不是应该用事务?怎么用?在哪里用?
如能有代码示范,最好。

急用,但实在不知道怎么处理好,请前辈们多多指教!
非常感谢!


...全文
127 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
愉快的登山者 2003-05-27
  • 打赏
  • 举报
回复
在一个事务中进行,每一步都进行判断,成功继续,否则ROLLBACK,返回;等全部做完后,都成功了,进行确认COMMIT。
guangyinsuipian 2003-05-27
  • 打赏
  • 举报
回复
commit 之后会将结果真正地提交,否则只是在一个缓存里操作的。
nnx 2003-05-27
  • 打赏
  • 举报
回复
怎么人烟稀少阿?
up
大家帮帮忙啊
nnx 2003-05-27
  • 打赏
  • 举报
回复
先谢过yoki(小马哥),
能说说为何拷贝一个表的记录后,就将源表里的相关记录删掉更好吗?
另,2中所写的事务,如果执行过程中出错,自己会自动回滚吗?还是要再写别的代码才能实现回滚呢?
yoki 2003-05-27
  • 打赏
  • 举报
回复
1:支持拷贝一个表的记录后,就将源表里的相关记录删掉,然后再进行下一个拷贝-删除操作
2:应用事务,如:
BEGIN TRAN T1
insert into A' select * from A where 条件...
delete from A where 条件....
COMMIT TRAN T1

BEGIN TRAN T1
insert into B' select * from B where 条件...
delete from B where 条件....
COMMIT TRAN T1




nnx 2003-05-27
  • 打赏
  • 举报
回复
再次up
nnx 2003-05-27
  • 打赏
  • 举报
回复
那整个结构是不是应该是这样啊:

BEGIN TRAN
insert into A' select * from A where 条件...
If @@Error<>0
Begin
RollBack
Return
End
delete from A where 条件....
If @@Error<>0
Begin
RollBack
Return
End

insert into B' select * from B where 条件...
If @@Error<>0
Begin
RollBack
Return
End

delete from B where 条件....
If @@Error<>0
Begin
RollBack
Return
End

...
...
...
COMMIT TRAN
gimemos 2003-05-27
  • 打赏
  • 举报
回复
BEGIN TRAN
insert into A' select * from A where 条件...
If @@Error<>0
Begin
RollBack
Return
End
delete from A where 条件....
insert into B' select * from B where 条件...
delete from B where 条件....
...
...
...
COMMIT TRAN

每一句语句后面都加以下一段就可以了
If @@Error<>0
Begin
RollBack
Return
End
nnx 2003-05-27
  • 打赏
  • 举报
回复
那针对我的这个问题,要对多个表分别进行拷贝、插入、删除的以一系列操作,我希望是要么全部操作都成功,要么所有的操作都撤销,我又该如何处理?整个程序的框架又应当是怎样的呢?

34,873

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧