如何解决编译触发器时出现Oracle错误ORA-00922
我在表中有一个varchar2数据类型列。用户只能在该列中插入数字,而我不想更改为数字。有时,在手动插入此列数据时,用户可以在列中留出空间。我创建了一个触发器来避免它。我写的触发器如下。
CREATE OR REPLACE trigger_name
BEFORE INSERT ON table
FOR EACH ROW
BEGIN
IF :new.column != TRIM(:new.column) THEN
:new.column := TRIM(:new.column);
ELSE
dbms_output.put_line(:new.column || ' is suitable for jobid');
END IF;
END;
编译上面的代码时出现如下错误。
“ ORA-00922:选项丢失或无效”
谢谢。
解决方法
错误ORA-00922
是由Barbaros Özhan指出的关键字TRIGGER
丢失引起的。只需添加它,并假设您正确设置了表名和列名,就可以了。
但要进一步查询,您似乎希望替换用户为该列输入的所有空格。如果是这样,此触发器可以做到:
CREATE OR REPLACE TRIGGER trigger_name
BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN
IF :new.column_name != REPLACE(:new.column_name,' ','') THEN
:new.column_name := REPLACE(:new.column_name,'');
ELSE
dbms_output.put_line(:new.column_name|| ' is suitable for jobid');
END IF;
END;
我添加了缺少的关键字trigger
。
只需将table_name
和column_name
替换为其正确的名称即可,它应该可以工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。