【发布时间】:2022-01-20 14:40:54
【问题描述】:
我正在使用 Oracle Database 19c 企业版 19 19.0.0.0.0。
我想创建一个触发器,始终将列中的第一个字母设置为大写。
create or replace TRIGGER TRIGGER_NAME
BEFORE INSERT OR UPDATE OF COLUMN_NAME ON TABLE_NAME
FOR EACH ROW
BEGIN
:NEW.COLUMN_NAME := upper(substr(:NEW.COLUMN_NAME,1,1))||substr(:NEW.COLUMN_NAME,2);
END;
触发器已创建,但我收到 ORA-00900: Invalid SQL statement error。
为什么以及解决方案是什么样的?
【问题讨论】:
-
当我创建一个存根
table_name时,这似乎对我有用。可以分享minimal reproducible example吗? -
是的,您已经做对了,只需另一个 oracle 数据库中的一个简单表即可使用此代码。
-
您的触发器中没有 SQL 语句,所以问题可能出在您尝试运行的插入或更新语句中?
-
不,我从触发器中得到错误,而不是从任何插入或更新语句。这来自我可以 100% 信任的系统。没有触发器一切正常。