你如何使用NOLOCK与TADOQuery和TADOTable?

时间:2010-10-01 15:05:30

标签: delphi nolock tadoquery

我有SQL文本“SELECT * FROM TABLE1 WITH(NOLOCK)”。

两个问题:

  1. 如何让我的TADOQuery使用NOLOCK提示而不必在SQL文本中包含它?我有数以千计的TADOQuery和他们的SQL动态构建,并且很难将WITH(NOLOCK)添加到所有这些,更不用说我使用MSSQL以外的数据库平台。是否有TADOQuery属性?

  2. 如何使用TADOTable实现相同的目标? TADOTable没有任何SQL,所以如何告诉它使用NOLOCK提示?

  3. 由于

2 个答案:

答案 0 :(得分:2)

提示是特定于数据库的,因此您必须为每个支持的数据库发出正确的提示。在某些数据库中也没有任何等价物,例如Oracle不允许任何相似内容(读者从不阻止编写者和编写者永远不会阻止读者,因此不需要)。

恕我直言你根本不应该使用TADOTable组件 - 无论如何AFAIK你无法为生成的查询指定一个提示 - 无论如何这都太通用了。

此外,您应非常小心使用NOLOCK。这意味着READ UNCOMMITTED,又名脏读。您绕过了事务保护,除非您有充分的理由绕过它,否则您不应该 - 性能的提升可能不值得数据完整性和一致性的损失。

答案 1 :(得分:1)

如果您使用MS SQL,请在连接

上运行以下语句一次

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

啦啦队 AP