在模式中创建表(MYSCHEMA)在插入每个创建表之前,我需要创建一个从序列中生成的触发器ID列。如何实现这一点? c( ^8 i. x7 z1 q2 t' s2 F我知道如何通过触发器和序列来实现ID列的生成如下: e4 S6 b. Y" P) Y5 \' j3 |
CREATE OR REPLACE TRIGGER TR1 BEFORE INSERT ON TB1 FOR EACH ROWBEGIN SELECT SQ1.nextval INTO :new.primary_key_column FROM dual;END;但我不知道如何在我的架构中使用它AFTER CREATE ON SCHEMA触发器CREATE TABLE在BEFOREINSERT…然后创建触发器? # ]" f; i- G9 F! q2 Y+ ^' R/ ?* x# M我写了这个代码:+ I S! N# P. ^5 `: _& V0 H
CREATE OR REPLACE TRIGGER /*APPROOT*/after_create_table_triggerAFTER CREATE ON APPROOT.SCHEMADECLARE TABLE_NAME VARCHAR2(100);BEGINIF ORA_DICT_OBJ_TYPE = 'TABLE' THENSELECT ORA_DICT_OBJ_NAME INTO TABLE_NAME FROM DUAL;EXECUTE IMMEDIATE ('CREATE OR REPLACE TRIGGER id_table_gen BEFORE INSERT ON ' || TABLE_NAME || ' FOR EACH ROW BEGIN SELECT APPROOT.AE_IDSEQ.NEXTVAL INTO :new.ID FROM dual; END;');END IF;END;/然后,我用一个字段-ID我创建了测试表,但我的触发器不起作用…我认为使用事件属性函数ora_dict_obj_name原因是错的。0 _0 Y) u1 }+ P
有人能给我建议吗?& a* m3 U1 m5 _* i, l0 N; u
谢谢你。* j* O6 h5 t" C4 g) L
B F2 I" g- m 解决方案: