SQL 语句忽略了 Oracle 触发器中缺少的表达式
SQL Statement Ignored missing expression in Oracle trigger
我正在编写以下触发器,在尝试为该字段 FIELD_OLD_VALUE,FIELD_NEW_VALUE
插入值时出现错误。我必须根据 Select 查询为该字段插入值,但我得到的错误是 SQL Statement Ignored ORA-000936 missing expression in Oracle trigger
。我不想为字段 FIELD_OLD_VALUE,FIELD_NEW_VALUE
使用变量,因为我在这个问题中只为 ENV_ID
字段编写了插入语句,而且我还有许多其他字段要添加到此触发器中。因此,很难为每个字段分配变量和维护。
create or replace TRIGGER RATOR_MONITORING_CONFIGURATION."TRG_TRK_KPI_DEFINITION" AFTER UPDATE ON RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION
FOR EACH ROW
BEGIN
--NEU
IF NOT :old.ENV_ID=:new.ENV_ID THEN
INSERT INTO RATOR_MONITORING_CONFIGURATION.FIELD_TRACKING (FIELD_TRACKING_ID,TABLE_NAME,TABLE_ID, FIELD_NAME,FIELD_OLD_VALUE,FIELD_NEW_VALUE,USER_ID, TIMESTAMP)
VALUES (FIELD_TRACKING_SEQ.NEXTVAL,'KPI_DEFINITION',:new.KPI_DEF_ID,'Environment',to_char(Select NAME FROM ENVIRONMENT WHERE ENV_ID =:old.ENV_ID),to_char(Select NAME FROM ENVIRONMENT WHERE ENV_ID =:new.ENV_ID),:new.LAST_UPDATED_BY,:new.LAST_UPDATED_DATE );
END IF;
END;
如果您使用子查询作为参数,您需要将它们括在额外的括号中:
to_char((Select NAME FROM ENVIRONMENT WHERE ENV_ID =:old.ENV_ID))
我正在编写以下触发器,在尝试为该字段 FIELD_OLD_VALUE,FIELD_NEW_VALUE
插入值时出现错误。我必须根据 Select 查询为该字段插入值,但我得到的错误是 SQL Statement Ignored ORA-000936 missing expression in Oracle trigger
。我不想为字段 FIELD_OLD_VALUE,FIELD_NEW_VALUE
使用变量,因为我在这个问题中只为 ENV_ID
字段编写了插入语句,而且我还有许多其他字段要添加到此触发器中。因此,很难为每个字段分配变量和维护。
create or replace TRIGGER RATOR_MONITORING_CONFIGURATION."TRG_TRK_KPI_DEFINITION" AFTER UPDATE ON RATOR_MONITORING_CONFIGURATION.KPI_DEFINITION
FOR EACH ROW
BEGIN
--NEU
IF NOT :old.ENV_ID=:new.ENV_ID THEN
INSERT INTO RATOR_MONITORING_CONFIGURATION.FIELD_TRACKING (FIELD_TRACKING_ID,TABLE_NAME,TABLE_ID, FIELD_NAME,FIELD_OLD_VALUE,FIELD_NEW_VALUE,USER_ID, TIMESTAMP)
VALUES (FIELD_TRACKING_SEQ.NEXTVAL,'KPI_DEFINITION',:new.KPI_DEF_ID,'Environment',to_char(Select NAME FROM ENVIRONMENT WHERE ENV_ID =:old.ENV_ID),to_char(Select NAME FROM ENVIRONMENT WHERE ENV_ID =:new.ENV_ID),:new.LAST_UPDATED_BY,:new.LAST_UPDATED_DATE );
END IF;
END;
如果您使用子查询作为参数,您需要将它们括在额外的括号中:
to_char((Select NAME FROM ENVIRONMENT WHERE ENV_ID =:old.ENV_ID))