私は、TcxGrid を使用してビュー VM_TEST からデータを操作し、Oracle DB の INSTEAD OF UPDATE トリガーを使用してそれを更新する、Delphi アプリケーションに取り組んでいます。
これはビューのコードです:
create or replace view VM_TEST
AS
select
t_merce_ass.id_merce,
t_merce_ass.id_posizione,
t_merce_ass.prezzo,
t_tipo_merci.nome
from
t_merce_ass,
t_tipo_merci
where
t_tipo_merci.id_merce = t_merce_ass.id_merce
そして、これは代わりのトリガーです:
create or replace trigger TG_UPDATE_VM_TEST
instead of update on VM_TEST
for each row
begin
update
t_tipo_merci
set
t_tipo_merci.nome = :NEW.nome
where
t_tipo_merci.id_merce = :OLD.id_merce;
update
t_merce_ass
set
t_merce_ass.prezzo = :NEW.prezzo
where
t_merce_ass.id_merce = :OLD.id_merce
and
t_merce_ass.id_posizione = :OLD.id_posizione;
end TG_UPDATE_VM_TEST;
更新は今、sqlplus を介して正常に動作していますが、グリッドでは動作していません。これは、return 句を使用して更新を実行するためです (Oracle Monitor でログに記録されます)。
00:31.996 00:00.001 Query.Execute update VM_TEST set PREZZO = :v3 where rowid = :doa__rowid returning rowid into :doa__rowid
ORA-22816例外が発生します ( Unsupported feature with RETURNING clause
)。
問題を解決するには?グリッドの更新コマンドを機能させるために、このタイプのトリガーで行 ID を返す方法はありますか?