你提到你改變了觸發和表的名字,但是,我「會在這裏再次指出了那些(只是爲了完整性):
我看到3個錯誤:
- ‘觸發’保留字。在下面的例子中我改成了「ctrigger」。
- 「表」是保留字。我在下面的例子中改爲「垃圾」。
- 「日期」是保留字。我在下面的例子中改爲「cdate」。
- 我現在假設「cdate」是一個
DATE
數據類型。
下面的代碼正常運行..試着在你的系統上「按原樣」運行它並查看它是否有效?
如果確實如此,但它仍然在您的桌子上失敗,那麼我們肯定需要查看您桌子的定義以進一步排除故障。
drop table junk;
create table junk (id number,
cdate date);
CREATE OR REPLACE TRIGGER ttrigger
BEFORE INSERT OR UPDATE
ON junk
FOR EACH ROW
BEGIN
IF :NEW.cdate > SYSDATE THEN
RAISE_APPLICATION_ERROR(-20950, 'Error!');
END IF;
END;
/
測試結果如下:
SQL > create table junk (id number,
cdate date);
2
Table created.
Elapsed: 00:00:00.07
SQL > CREATE OR REPLACE TRIGGER ttrigger
BEFORE INSERT OR UPDATE
ON junk
FOR EACH ROW
BEGIN
IF :NEW.cdate > SYSDATE THEN
RAISE_APPLICATION_ERROR(-20950, 'Error!');
END IF;
END;
/
Trigger created.
Elapsed: 00:00:00.20
SQL > show err
No errors.
SQL >
爲什麼不運行它,看看它是否工作? – Mureinik
你認爲我會在這裏寫代碼,如果代碼將工作? – KRiSTiN
如果沒有,分享錯誤(如果有的話)或解釋錯誤(如果沒有錯誤)會幫助我們幫助你。 – Mureinik