2011-07-18 21 views
4

Oracleトリガーを作成しています。このトリガーは、挿入されたばかりの行のoidになるように、productId列の値を自動的に設定する必要があります。自動的に列の値を設定するためのOracle SQLトリガー

私が書いたトリガーは、次のとおりです。

create or replace trigger MyProduct_id_trg 
after insert on MyProduct 
begin 
    update MyProduct set productId = inserted.oid where oid = inserted.oid; 
end; 

しかし、これは動作しません。

誰かがこれを手伝ってくれますか?

よろしくお願いいたします。

答えて

11

OracleデータベースでSQL Server構文を使用しようとしているようです。こんにちは

+0

:(ない後前、およびfor each rowに注意してください。)

create or replace trigger MyProduct_id_trg before insert on MyProduct for each row begin :new.productId := :new.oid; end; 

:これを試してみてください。返信いただきありがとうございます。しかしこれはうまくいかないようです。 – Kevin

+0

申し訳ありません。 productIdはvarchar2で、oidはintです。タイプ変換をする必要がありますか? – Kevin

+0

@Kevin - 暗黙的な変換があります(製品IDが完璧な番号でない場合はエラーが発生します)。ただし、必要なときに明示的に変換することを常にお勧めします。また、常に番号を格納する場合、WHYはプロダクトID varchar2ですか? –

関連する問題