Есть табличка
CREATE TABLE DISTR_FILES
(
PACKET_ID NUMBER(20) NOT NULL,
FILE_ID NUMBER(20) NOT NULL,
FILE_BODY BLOB,
FILE_VERSION VARCHAR2(20 BYTE) NOT NULL,
FILE_DATE DATE NOT NULL,
DIGEST VARCHAR2(32 BYTE),
)
в которой хранится в поле FILE_BODY бинарные файлы
нужно написать тригер который вычисляет MD5 сумму и заполняет DIGEST
CREATE OR REPLACE TRIGGER DIGEST
BEFORE INSERT OR UPDATE
ON ADMP.DISTR_FILES
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
declare
checksum raw(16);
begin
checksum := dbms_obfuscation_toolkit.MD5(input => :New.FILE_BODY);
:New.DIGEST:= rawtohex(checksum);
EXCEPTION
WHEN OTHERS THEN
-- Consider logging the error and then re-raise
RAISE;
END ;