【问题标题】:Bad SQL grammar with statements using NOLOCK using HSQLDB使用 NOLOCK 使用 HSQLDB 的语句的错误 SQL 语法
【发布时间】:2017-10-23 10:16:10
【问题描述】:

我正在使用 HSQLDB 并尝试运行查询中包含 NOLOCK 的 select 语句。

执行语句时,会抛出BadSqlGrammarException

有没有办法解决这个问题,因为该命令在 SQL Server 上运行得非常好?

【问题讨论】:

  • HSQLDB 不支持 NOLOCK。如果您在查询中需要它,则需要针对真实事物(SQL Server)运行测试

标签: sql hsqldb nolock


【解决方案1】:

a_horse_with_no_name 他的评论是正确的:

HSQLDB 不支持 NOLOCK。如果您在语句中需要它,则需要针对真实事物(SQL Server)运行测试

为了澄清这一点,NOLOCK 是一个特定于 SQL Server 的关键字,它指定了数据库行为方式的提示。它甚至在 Stack Overflow 上有自己的标签

可用于防止查询发出共享读锁的 SQL Server 表提示。虽然经常用于防止查询阻塞其他查询,但它也容易受到脏读和其他潜在数据问题的影响。

因此,包含该关键字的 SQL 查询对 HyperSQL 无效。

你可以做的是:

  • 针对 SQL Server 实例运行测试(如上述注释所指出的)。
  • 重构您的 SQL 语句以不使用 SQL Server 的细节。在这种情况下,您必须确保他们不使用NOLOCK。如果没有更多相关知识,就无法说出这将如何影响您的应用程序。

附带说明,HyperSQL fully supports the SQL specification

HyperSQL 2.x 支持 SQL 标准 92、1999、2003、2008 和 2011 定义的 SQL 方言。

【讨论】:

    猜你喜欢
    • 2013-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-13
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    相关资源
    最近更新 更多