나는 TcxGrid를 사용하여 Oracle VM에서 뷰 VM_TEST 및 INSTEAD OF UPDATE 트리거의 데이터를 조작하여 델파이 애플리케이션을 업데이트하고 있습니다. 대신 오라클 트리거 및 ORA-22816 오류
이
뷰의 코드입니다 :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를 통해, 잘 작동하지만, 그리드 작업이 때문에 아니에요 (Oracle Monitor로 기록 된) 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
).
문제를 해결하는 방법? 이 유형의 트리거에서 rowid를 반환하여 그리드의 업데이트 명령을 작동시키는 방법이 있습니까?
보기에서 ROWID가 반환됩니다. – tbone
어떤 데이터베이스 구성 요소를 사용합니까? – jachguate
우리는 TOracleDataSet을 사용하고 있습니다. 구성 요소가 내부 테이블의 수정 된 레코드를 찾기 위해 업데이트 후에 rowid를 요청한다고 가정합니다. – shaman74