Bonjour,

J'ai deux tables
Une table TEST_DESC qui decrit des colonnes(col_name, col_type et col_size).
Une table TEST.

En fait la table TEST_DESC contient la description des colonnes de la table TEST.

J'aimerai que quand je fais un Insert, update ou un Delete dans ma table TEST_DESC, les effet soient repercutés sur TEST.

J'ai donc fait un trigger

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
 
CREATE OR REPLACE TRIGGER TRG_TEST_DESC
AFTER INSERT OR UPDATE OR DELETE 
ON TEST_DESC
FOR EACH ROW
 
DECLARE
 vMsg VARCHAR2(30) := 'Row Level Trigger Fired';
BEGIN
  IF INSERTING THEN
    dbms_output.put_line(vMsg || ' On Insert ' || :new.col_name);
	execute immediate( ' ALTER TABLE TEST ADD '||:new.col_name||' '||:new.col_type||'('||:new.col_size||') ' );
--	dbms_output.put_line( 'ALTER TABLE TEST ADD '||:new.col_name||' '||:new.col_type||'('||:new.col_size||')' );
  ELSIF UPDATING THEN
    dbms_output.put_line(vMsg || ' On Update');
  ELSIF DELETING THEN
    dbms_output.put_line(vMsg || ' On Delete');
  END IF;
END TRG_TEST_DESC;
/
Quand je fais ça ca compile, mais j'ai une erreur oracle "04092 : cannot commit in a trigger"

Quelqu'un à une piste pour contourner ça ?

Cdt
Emilien