我是Oracle(10g)数据库的新手。
我的问题是我不确定语法,我需要为Oracle数据库重写此触发器:
CREATE OR REPLACE TRIGGER trigger
BEFORE INSERT OR UPDATE
ON table
FOR EACH ROW
BEGIN
IF :NEW.date > SYSDATE THEN
RAISE_APPLICATION_ERROR(-20950, 'Error!');
END IF;
END;
答案 0 :(得分:0)
你提到你改变了触发器和表格的名称,但是,我会在这里再说一遍(仅为了完整性):
我看到3个错误:
DATE
数据类型。以下代码正常运行..尝试在您的系统上运行此功能"按原样#34;看看它是否有效?
如果确实如此,但它仍然在您的桌面上失败,那么我们肯定需要查看您的表的定义以进一步排除故障。
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 >