sybase table 在插入语句末尾用分号锁定
sybase table Lock with semicolon at end of insert statement
在 Sybase 中用分号终止插入语句会导致锁定发生插入的 table 吗?
我试图在 sybase table 中插入 95 行,每个插入都以 ; 结尾。是否有可能导致巨大的数据库锁定
不,分号不会导致锁定。
分号只是一个命令分隔符,与锁管理无关。
您可能有一个打开的事务在新插入的行上持有锁,可能升级为 table 级别的独占锁。您运行是否处于链式交易模式?您的 client/application 是否有 AUTOCOMMIT
设置?如果有,那是什么?
command/query 到 运行 确定您是否处于打开事务中的内容将取决于您使用的实际 Sybase RDBMS 产品(ASE?IQ?SQLAnywhere?优势?)。 [如果您有 DBA,s/he 应该能够帮助确定您是否有未完成的事务。] [更新:OP 声明这是 Sybase ASE
在这种情况下,查询 select @@trancount
将显示未结交易的数量 ... 对于每个嵌套 begin tran
增加 +1
... 将 return 0
如果没有未结交易。]
假设您 运行 处于链式事务模式(又名 AUTOCOMMIT=false
),您可以尝试发出 commit;
;如果这关闭了事务,那么应该释放锁并且任何阻塞都应该消失。 [一个可能的问题是嵌套的未结交易,在这种情况下,您需要为每个未结交易发出 commit;
;在这种情况下,发出几个 commit;
命令不会导致任何问题,同时确保关闭多个打开的事务。]
另一种确定您是否处于打开的事务中的方法...注销 and/or 断开您的 client/application 与数据库的连接;当数据库看到您的连接消失时,它将回滚您的连接持有的所有打开的事务;回滚将导致 95 行 'disappear' 并且任何阻塞锁也应该消失。
在 Sybase 中用分号终止插入语句会导致锁定发生插入的 table 吗? 我试图在 sybase table 中插入 95 行,每个插入都以 ; 结尾。是否有可能导致巨大的数据库锁定
不,分号不会导致锁定。
分号只是一个命令分隔符,与锁管理无关。
您可能有一个打开的事务在新插入的行上持有锁,可能升级为 table 级别的独占锁。您运行是否处于链式交易模式?您的 client/application 是否有 AUTOCOMMIT
设置?如果有,那是什么?
command/query 到 运行 确定您是否处于打开事务中的内容将取决于您使用的实际 Sybase RDBMS 产品(ASE?IQ?SQLAnywhere?优势?)。 [如果您有 DBA,s/he 应该能够帮助确定您是否有未完成的事务。] [更新:OP 声明这是 Sybase ASE
在这种情况下,查询 select @@trancount
将显示未结交易的数量 ... 对于每个嵌套 begin tran
增加 +1
... 将 return 0
如果没有未结交易。]
假设您 运行 处于链式事务模式(又名 AUTOCOMMIT=false
),您可以尝试发出 commit;
;如果这关闭了事务,那么应该释放锁并且任何阻塞都应该消失。 [一个可能的问题是嵌套的未结交易,在这种情况下,您需要为每个未结交易发出 commit;
;在这种情况下,发出几个 commit;
命令不会导致任何问题,同时确保关闭多个打开的事务。]
另一种确定您是否处于打开的事务中的方法...注销 and/or 断开您的 client/application 与数据库的连接;当数据库看到您的连接消失时,它将回滚您的连接持有的所有打开的事务;回滚将导致 95 行 'disappear' 并且任何阻塞锁也应该消失。