0
在用戶嘗試輸入值之前,我有如下觸發器來檢查在表中是否有可用的牀,如果不是,則會顯示錯誤。在插入if語句之前的Oracle觸發器
create or replace
trigger checkBeds
before insert or update on INPATIENT_STAY for
each row
Begin
select BEDSAVAIL from WARD where wardnum=:new.WARDNUM;
if(BEDSAVAIL <=0) then
DBMS_OUTPUT.PUT_LINE('There are no beds available.');
end if;
END;
時,這是運行出現以下錯誤
:
Error(2,42): PLS-00049: bad bind variable 'NEW.WARDNUM'
WARD
由INPATIENT_STAY
外鍵稱爲WARDNUM
這裏掛INPATIENT_STAY
是在WARD
表的結構
CREATE TABLE WARD
(
WARDNUM VARCHAR2(20 BYTE) NOT NULL
, NAME VARCHAR2(40 BYTE)
, LOCATION VARCHAR2(20 BYTE)
, TOTALBEDS NUMBER
, TELEXTENTION VARCHAR2(20 BYTE)
, BEDSAVAIL NUMBER
, CONSTRAINT WARD_PK PRIMARY KEY
(
WARDNUM
));
這裏的INPATIENT_STAY
表
CREATE TABLE INPATIENT_STAY
(
INPATIENTID VARCHAR2(20 BYTE) NOT NULL
, PATIENTNUMBER VARCHAR2(20 BYTE)
, WADNUM VARCHAR2(20 BYTE)
, DATEONWAITINGLIST DATE
, EXPECTEDDURATION VARCHAR2(20 BYTE)
, EXPECTEDLEAVEDATE DATE
, DATEPLACEDINWARD DATE
, REQWARD VARCHAR2(20 BYTE)
, DATELEFT DATE
, CONSTRAINT INPATIENT_STAY_PK PRIMARY KEY
(
INPATIENTID
)
);
的結構如何解決這個問題?
這仍然不能正常工作,它給了同樣的錯誤 – Pindo
你肯定列'WARDNUM 'WARD'&'INPATIENT_STAY'中有沒有? – Dba
或者請驗證您的列是否使用雙引號創建。請分享您完整的'WARD'和'INPATIEND_STAY'創建表格腳本。 – Dba