我将startdate值发送到结束日期,通过值创建,以及在代码中指定的modifiedby等。只应在更新信息期间执行此操作。但是我得到了
ORA-01747:“toad中的user.table.column,table.column或列规范错误无效”
CREATE OR REPLACE TRIGGER SMTS.SMTS_DR_TIMINGS_UPDATE_RECORD
BEFORE UPDATE OF START_DATE
ON SMTS.SMTS_DR_TIMINGS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
DECLARE
tmpvar NUMBER;
BEGIN
BEGIN
update SMTS_DR_TIMINGS
set END_DATE = :new.START_DATE,
MODIFIED_BY = :new.CREATED_BY,
MODIFIED_DATETIME = :new.CREATED_DATETIME
where TOWNSHIP_CODE = :new.TOWNSHIP_CODE
and DR_ID = :new.DR_ID
and END_DATE is null ;
Exception
when others then null;
END;
END SMTS_DR_TIMINGS_UPDATE_RECORD;
任何人都可以帮我解决这个错误吗? Thanx提前
答案 0 :(得分:0)
您可以尝试
CREATE OR REPLACE TRIGGER smts.smts_dr_timings_update_record
BEFORE UPDATE OF start_date
ON smts.smts_dr_timings
REFERENCING NEW AS new OLD AS old
FOR EACH ROW
DECLARE
tmpvar NUMBER;
BEGIN
BEGIN
IF UPDATING ('start_date') AND <your logic> THEN
:new.end_date := :new.start_date;
:new.modified_by := :new.created_by;
:new.modified_datetime := SYSDATE;
END IF;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
END smts_dr_timings_update_record;
更新1
CREATE OR REPLACE TRIGGER test_trg
BEFORE UPDATE OF my_col
ON my_table
REFERENCING NEW AS new OLD AS old
FOR EACH ROW
DECLARE
tmpvar NUMBER;
BEGIN
BEGIN
IF UPDATING ('my_col')
THEN
:new.creation_date := SYSDATE;
:new.last_update_date := SYSDATE;
:new.last_updated_by := 1234;
END IF;
EXCEPTION
WHEN OTHERS
THEN
NULL;
END;
END test_trg;
更新声明
update my_table set my_col='Test update' where my_primary_key= 45;
以上工作正常。