微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在插入语句末尾使用分号锁定 sybase 表

如何解决在插入语句末尾使用分号锁定 sybase 表

在 Sybase 中用分号终止插入语句是否会导致对发生插入的表的锁定? 我试图在 sybase 表中插入 95 行,每个插入都以 ; 结尾。是否有可能导致巨大的数据库

解决方法

不,分号不会导致锁定。

分号只是一个命令分隔符,与锁管理无关。

您可能有一个打开的事务,它在新插入的行上持有锁,可能会升级为表级排他锁。您是否在链式事务模式下运行?您的客户端/应用程序是否有 AUTOCOMMIT 设置,如果有,是什么?

运行什么命令/查询来确定您是否处于打开的事务中将取决于您使用的实际 Sybase RDBMS 产品(ASE?IQ?SQLAnywhere?Advantage?)。 [如果您有 DBA,他/她应该能够帮助确定您是否有未结事务。] [更新:OP 已声明这是 Sybase ASE,在这种情况下,查询select @@trancount 将显示打开交易的数量……每个嵌套的 +1 增加 begin tran……如果没有打开的交易,将返回 0。]>

假设您在链式事务模式(又名 AUTOCOMMIT=false)下运行,您可以尝试发出 commit;;如果这关闭了事务,那么应该释放锁并且任何阻塞都应该消失。 [一个可能的问题是嵌套的打开事务,在这种情况下,您需要为每个打开的事务发出一个 commit;;在这种情况下,发出多个 commit; 命令不会导致任何问题,同时确保关闭多个打开的事务。]

另一种确定您是否处于开放事务中的方法……注销和/或断开您的客户端/应用程序与数据库的连接;当数据库看到您的连接消失时,它将回滚您的连接所持有的所有打开的事务;回滚会导致 95 行“消失”,任何阻塞锁也应该消失。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?