2016-12-15 13 views
-1

OracleのUSER関数を切り捨て、USERという別名を使用する必要があります。私は更新前の行トリガーへのアクセス権を持っていけないので、これはこれは動作しませんsql oracleユーザーを切り捨てる

ユーザー(Oracleユーザー名と私のOracleユーザー名が文字制限を超えている)、そのユーザ
SELECT SYSDATE, REPLACE(USER,'NINETEEN','NINET') as USER FROM DUAL; 

です。キーは、USERがエイリアスでなければならないということです。これを使わないとうまくいきますが、トリガーが働くようにUSERを保持する必要があります。

ここにトリガーがあります(権限がないので変更できません)。

create or replace trigger tr_upd 
before update on tableA 
    for each row 
begin 
    :new.dateofchange := sysdate; 
    :new.userofchange:= user; 

問題は私のOracleユーザーが長すぎます。私はそれを短くする必要があります(私が更新する前に) - しかし、永久にはありません。

+3

私には本当に不明です。あなたが得る必要があることを示す、あなたの出発状況の例を投稿してください。例えば、あなたはトリガーについて書いています。そして「ユーザを切り捨てる」とはどういう意味ですか? – Aleksej

+0

申し訳ありませんが、あなたの質問は完全に不明です。取得する必要があることをステップごとに慎重に記述してください。変更前のコード/データの表示方法と、希望する結果の表示方法を示します。 – Kacper

+0

'を「USER」としていますか? –

答えて

0

私はあなたが探している機能は、特定の文字数(more info on SUBSTR here)までの文字列値を低減SUBSTR、だと思う。たとえば

SELECT SYSDATE, SUBSTR(USER, 1, x) as "USER" FROM DUAL; 

は、「X」を交換してくださいあなたのuserofchange列の長さで。

また、私はuserofchange列の長さを増やすことをお勧めします。それはユーザー名を格納するためのものだが、短すぎる場合、それは適切にそれをやっていない。

関連する問題