最近碰到一种情况,需要限制某个存储过程只能有一个进程在执行,上一个执行完毕后下一个再执行。也就是类似与程序开发中的线程同步问题。 汇总一个下,可以通过如下方法来实现。 1、设置一个变量,或者表中的某个字段为标识位,执行时设置为某个值,执行完后
最近碰到一种情况,需要限制某个存储过程只能有一个进程在执行,上一个执行完毕后下一个再执行。也就是类似与程序开发中的线程同步问题。
汇总一个下,可以通过如下方法来实现。
1、设置一个变量,或者表中的某个字段为标识位,执行时设置为某个值,执行完后再设置为原来的值。
这种方式的要求设置标识位的地方和判断这个标识位的地方间隔时间不能太长,否则还是达不到要求。
2、使用行锁来实现。
比如建一个表t_test,插入几条数据。 在存储过程开始的地方
select s.id into v_sn from t_test s for update;
v_sn-是定义的变量,因为在存储过程中直接select for update这种形式的话,会编译错误,所以需要加上into。
完全公开源代码,并无任何许可限制 特别基于大型电子商务网站的系统开发 Microsoft SQL Server 2000后台数据库,充分应用了存储过程的巨大功效 基于类模块的扩展数据访问能力支持任何类型的大型数据库 加密用户登录信息(cookie) 易于安装的系统和应用功能 100%的asp.net的代码,没有COM,java或者其他的格式 完全基于MS建议的系统安全设计 最佳的应用程序,数据库
0
然后在存储过程结束时,commit或者rollback。当然为了更保险,可使用异常捕获。
当然为了防止死锁,可以在for update后加上wait 时间。这样到了这个时间这个存储过程会报异常并结束,防止长时间锁住。
具体脚本如下:
create or replace procedure test_pro is
v_sn varchar2;
begin
select s.id
into v_sn
from t_test s for update wait 10;--10s
--自己的执行脚本
commit;--或者rollback;
EXCEPTION
WHEN OTHERS THEN
BEGIN
ROLLBACK;
END;
end test_pro;这样可以实现一般的阻塞存储过程。
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
C++高性能并发应用_C++如何开发性能关键应用
Java AI集成Deep Java Library_Java怎么集成AI模型部署
Golang后端API开发_Golang如何高效开发后端和API
Python异步并发改进_Python异步编程有哪些新改进
C++系统编程内存管理_C++系统编程怎么与Rust竞争内存安全
Java GraalVM原生镜像构建_Java怎么用GraalVM构建高效原生镜像
Python FastAPI异步API开发_Python怎么用FastAPI构建异步API
C++现代C++20/23/26特性_现代C++有哪些新标准特性如modules和coroutines
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号