truncate table 问题

[复制链接]
查看11 | 回复9 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
请问大家一个问题,如果我想在固定时间定时truncate table table1,但如果在触发这个事务(truncate table table1)时正好系统正好在调用这个表(table1),数据库就会报错,请问题大家要如何处理(来保证这个truncate table table1顺利执行)???????
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
"触发这个事务"
在哪里触发?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
在job中触发,
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
整个流程是JOB调用存储过程,truncate table table1是这个存储过程中的其中一行代码
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
试试exception捕获错误,然后根据错误信息处理,比如延时重试啥的
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
原帖由 sxlcom 于 2008-10-27 17:20 发表
整个流程是JOB调用存储过程,truncate table table1是这个存储过程中的其中一行代码

o,并非单纯的truncate啊,试试这样,truncate之前,select * from tbl for update;
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
是不是只能暂时关闭WEB服务,再处理后再打开WEB服务
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
不需要,跟服务没有关系~~~
select for update实际就是加锁,要获得锁之前会一直等待,直到其它对象释放~~~
一旦select for update占有对象,同事务内的truncate就可以顺利执行了
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
如果表记录在几百万条数据会占很大资源吗
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
select* fromtblfor update与selectcount(1)fromtblfor updatet等同吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行