我想在定义触发器时在Oracle(PL / SQL)中执行以下操作:
DECLARE pk_column_name VARCHAR(50) := 'id'; BEGIN EXECUTE IMMEDIATE 'CREATE OR REPLACE TRIGGER table_a_trigger BEFORE INSERT ON table_a FOR EACH ROW BEGIN IF :new.pk_column_name IS NULL THEN /* here */ SELECT table_a_sequence.nextval INTO :new.pk_column_name /* and here */ FROM DUAL; END IF; END;'; END;
我希望变量pk_column_name(包含字符串' id')为"展开"所以我可以像上面的例子一样写出来:
IF :new.pk_column_name ....
而不是......
IF :new.id ....
我尝试过很多东西:
:new."pk_column_name" :new.&pk_column_name :new.:pk_column_name
有人可以帮助我吗?
谢谢,最诚挚的问候,
乌
答案 0 :(得分:0)
我明白了!
... IF :new.' || pk_column_name || ' IS NULL THEN ...
和
... INTO :new.' || pk_column_name || ' FROM DUAL;