相关疑难解决方法(0)

Oracle:如何确定是否有待处理的事务?

我正在寻找一种方法来确定当前会话中是否存在未提及的INSERT,UPDATE或DELETE语句.一种方法是使用当前sid检查v $ lock,但这需要对v $ lock的读访问权限,如果DBA不想授予它,这将是一个问题.任何其他方式(除了跟踪应用程序发出的所有数据库命令)?

oracle transactions

31
推荐指数
4
解决办法
14万
查看次数

如何判断我在Oracle事务中是否有未提交的工作?

有没有办法告诉我在交易中是否有未提交的工作(即DML)?也许我可以查询数据字典视图?

从运行开放事务的会话的内部和外部发现这一点的方法将是受欢迎的.

谢谢

sql oracle transactions

12
推荐指数
2
解决办法
2万
查看次数

SELECT是否在PL / SQL中启动事务

有人告诉我,以下代码不会帮助我检查重复性,因为在SELECT和UPDATE语句之前结果可能有所不同。

PROCEDURE AddNew(Pname VARCHAR2, Pcountry VARCHAR2)
AS
    already_exists BOOLEAN;
BEGIN
    SELECT COUNT(*)>0 INTO already_exists FROM Publishers WHERE name=Pname;
    IF already_exists THEN
        RAISE_APPLICATION_ERROR(-20014,'Publisher already exists!');
    END IF;
    INSERT INTO Publishers(id,name,country)
        VALUES (NewPublisherId(),Pname,Pcountry);
END;
Run Code Online (Sandbox Code Playgroud)

这篇文章声称SELECT启动了一个事务: 为什么仅从数据库视图中进行选择时为什么会得到未结事务?

文档的这一部分另有建议:

事务隐式地开始于获得TX锁定的任何操作:

  • 发出修改数据的语句时

  • 发出SELECT ... FOR UPDATE语句时

  • 使用SET TRANSACTION语句或DBMS_TRANSACTION包显式启动事务时

所以?SELECT是否启动事务?

sql oracle plsql transactions

5
推荐指数
1
解决办法
735
查看次数

标签 统计

oracle ×3

transactions ×3

sql ×2

plsql ×1