スキーマ (MYSCHEMA) でテーブルを作成するとき、作成された各テーブルに挿入する前に (シーケンスから) ID 列を生成するトリガーを作成する必要があります..どうすればこれを実現できますか?
トリガーとシーケンスを介してID列の生成を実現する方法を知っています。次のようなものです。
CREATE OR REPLACE TRIGGER TR1
BEFORE INSERT ON TB1
FOR EACH ROW
BEGIN
SELECT SQ1.nextval
INTO :new.primary_key_column
FROM dual;
END;
しかし、トリガーを使用してスキーマのAFTER CREATE ON SCHEMA
後にトリガーを作成する方法がわかりません...CREATE TABLE
BEFORE INSERT
私はこのコードを書きました:
CREATE OR REPLACE TRIGGER /*APPROOT*/after_create_table_trigger
AFTER CREATE ON APPROOT.SCHEMA
DECLARE
TABLE_NAME VARCHAR2(100);
BEGIN
IF ORA_DICT_OBJ_TYPE = 'TABLE' THEN
SELECT 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 という 1 つのフィールドでテスト テーブルを作成しましたが、トリガーが機能しません... イベント属性関数 ora_dict_obj_name の使用が間違っていることが原因だと思います。
誰かが私にこれについてアドバイスをくれますか?
ありがとうございました。