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' 并且任何阻塞锁也应该消失。