0
我有以下觸發:Oracle觸發器更新行
create or replace
trigger updateBeds
After insert or update on INPATIENT_STAY for
each row
Begin
if(:new.INPATIENT_STAY.DATEPLACEDINWARD<=sysdate and :new.INPATIENT_STAY.expectedleavedate>=sysdate)
then
update WARD
set BEDSAVAIL = TOTALBEDS - 1
where WARDNUM = :new.INPATIENT_STAY.WARDNUM;
end if;
if(:new.INPATIENT_STAY.DATELEFT <= sysdate) then
update WARD
set BEDSAVAIL = TOTALBEDS +1
where WARDNUM = :new.INPATIENT_STAY.WARDNUM;
end if;
END;
這觸發意味着從列totalbeds
減1,如果INPATIENT_STAY.DATEPLACEDINWARD
和INPATIENT_STAY.expectedleavedate
小於系統日期。 此外,如果INPATIENT_STAY.DATELEFT
小於或等於系統日期,totalbeds
應1. WARD
增加由INPATIENT_STAY
外鍵名爲鏈接到INPATIENT_STAY
WARDNUM
當我嘗試編譯扳機,我得到以下錯誤:
Error(2,4): PLS-00049: bad bind variable 'NEW.INPATIENT_STAY'
Error(2,54): PLS-00049: bad bind variable 'NEW.INPATIENT_STAY'
Error(6,21): PLS-00049: bad bind variable 'NEW.INPATIENT_STAY'
Error(8,4): PLS-00049: bad bind variable 'NEW.INPATIENT_STAY'
Error(11,21): PLS-00049: bad bind variable 'NEW.INPATIENT_STAY'
我不知道我在做什麼錯在這裏。任何幫助深表感謝
的表是:
WARD
WARDNUM VARCHAR2(20 BYTE)
NAME VARCHAR2(40 BYTE)
TOTALBEDS NUMBER
BEDSAVAIL NUMBER
INPATIENT_STAY
INPATIENTID VARCHAR2(20 BYTE)
WARDNUM VARCHAR2(20 BYTE)
EXPECTEDLEAVEDATE DATE
DATEPLACEDINWARD DATE
DATELEFT DATE
我仍然得到同樣的錯誤,但這個時候'new.WARDNUM' – Pindo
@Pindo請更新您的問題,我們展示了這兩個'INPATIENT_STAY'和'WARD'表的表定義。 –
我已更新問題 – Pindo