删除语句请教?

tjs_125 2012-02-29 11:36:58
我有两个表,表1是T_MeterOrigValue,每个小时会新存入6000条数据,表2是备份表T_MeterOrigValue_bak,我是每个小时定时将表1中的数据处理完后转存到表2,然后删除表1中的数据(这里不能用truncate或者全部删除)。现在我的删除语句如下:

delete from T_MeterOrigValue   
where F_OrigValueID in (select F_OrigValueID from T_MeterOrigValue_bak);


表2 T_MeterOrigValue_bak 中的数据量非常大,有上千万条,F_OrigValueID为主键。

请问这样的删除语句怎么写比较好?
...全文
72 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
大力水手 2012-02-29
  • 打赏
  • 举报
回复

--封装到,try catch里面
begin try
begin tran
insert into T_MeterOrigValue_bak
select *
from T_MeterOrigValue
where (F_OrigValueID like '350100A100%' or F_OrigErrCode<>'A');
commit tran
end try
begin catch
select error_number()
rollback tran
end catch
--没有在查询分析器里写..直接在这写了..大致就这个思路
勿勿 2012-02-29
  • 打赏
  • 举报
回复
有什么问题吗
tjs_125 2012-02-29
  • 打赏
  • 举报
回复
其实是一个存储过程,大概如下,请问怎样写比较好?
里面检查是否出错,主要是防止重复插入数据,因为有时候有这个可能。
	
--...数据处理过程
begin transaction -- 开始事务
insert into T_MeterOrigValue_bak
select *
from T_MeterOrigValue
where (F_OrigValueID like '350100A100%' or F_OrigErrCode<>'A');
IF @@ERROR <> 0
rollback transaction -- 如果插入出错,回滚事务
else
commit transaction; -- 插入成功,提交事务
delete from T_MeterOrigValue
where F_OrigValueID in (select F_OrigValueID from T_MeterOrigValue_bak);

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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