Teradata通过具有访问权限的视图访问表时锁定表以供读取

时间:2017-02-02 12:18:48

标签: sql teradata access

这真的很奇怪。

我有2个视图,一个具有访问权限,另一个具有对表的读取权限。

replace view v1_read as locking row for read
select id1 from t1;

replace view v2_access as locking row for access
select id2 from t2;

然后我运行这样的选择查询并查看解释计划:

select id1, id2
from v2_access left join v1_read on v2_access.id2=v1_read.id1;

Teradata阻止表t2进行读取,但它应该阻止访问。是bug吗?

我可以说Teradata以这种方式手动阻止访问:

lock table t2 for access -- before the query

然而,这种解决方案存在问题 - 管理员不提供此类授权。

  • 道明发布:15.10.03.07

  • 道明版:15.10.03.09

我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果您使用join编写此类选择查询而未指定任何内容,则TD将从两个视图获得最大权限。所以这就是t2被禁止阅读的原因。

  1. 始终使用explain
  2. 检查区块
  3. 如果您不同意,请手动阻止lock table t2 for access