我有SQL文本“SELECT * FROM TABLE1 WITH(NOLOCK)”。
两个问题:
如何让我的TADOQuery使用NOLOCK提示而不必在SQL文本中包含它?我有数以千计的TADOQuery和他们的SQL动态构建,并且很难将WITH(NOLOCK)添加到所有这些,更不用说我使用MSSQL以外的数据库平台。是否有TADOQuery属性?
如何使用TADOTable实现相同的目标? TADOTable没有任何SQL,所以如何告诉它使用NOLOCK提示?
由于
答案 0 :(得分:2)
提示是特定于数据库的,因此您必须为每个支持的数据库发出正确的提示。在某些数据库中也没有任何等价物,例如Oracle不允许任何相似内容(读者从不阻止编写者和编写者永远不会阻止读者,因此不需要)。
恕我直言你根本不应该使用TADOTable组件 - 无论如何AFAIK你无法为生成的查询指定一个提示 - 无论如何这都太通用了。
此外,您应非常小心使用NOLOCK。这意味着READ UNCOMMITTED,又名脏读。您绕过了事务保护,除非您有充分的理由绕过它,否则您不应该 - 性能的提升可能不值得数据完整性和一致性的损失。
答案 1 :(得分:1)
如果您使用MS SQL,请在连接
上运行以下语句一次SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
啦啦队 AP