2017-02-02 14 views
0

これは本当に奇妙です。Teradataは、アクセス権を持つテーブルを介してテーブルにアクセスしているときに読み取るテーブルをロックします。

私は2ビュー、アクセス権を持つ1と表に対する読み取り権限を持つ他のを持っています。

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を、それがアクセスをブロックする必要があります。それはバグですか?

私はそれが手動でアクセスするためにこの方法をブロック開始するためのTeradataを言うことができます。

lock table t2 for access -- before the query 

は、しかし、そのような解決策に問題があります - 管理者は、このような補助金を与えるものではありません。

  • TDリリース:15.10.03.07

  • TDバージョン:15.10.03.09

私はそれをどのように修正することができますか?あなたは何も指定せずに参加して、このような選択クエリを記述する場合

+0

それをブロックし、手動で、explain

  • でブロックを確認しますか? – dnoeth

  • +0

    @dnoeth更新質問情報 – Rocketq

    +2

    うーん、私は、これは行動を文書化されている場合、私は 'ロック行read'(それはとにかくデフォルトです)を使用してビューを作成することはないのか分かりません。 Teradataのサポートに連絡するには、DBAに相談してください。 – dnoeth

    答えて

    0

    、TDは両方の観点から、最大の権限を取得します。だから、これが理由でt2がブロックされています。

    1. 同意アレント場合は、必ずのTeradataリリースが何lock table t2 for access
    関連する問題