I have this situation: CREATE TYPE parent AS OBJECT (att1 NUMBER(1), att2 NUMBER(1)) NOT FINAL; CREATE TYPE child1 UNDER PARENT (att3 NUMBER(1)); CREATE TYPE child2 UNDER PARENT (att4 NUMBER(1), att5 NUMBER(1)); CREATE TABLE test OF parent; CREATE TABLE test_2 OF parent; whish to create trigger/s that each time i insert a row in "test" table that has att1 = 1, that row is added to test_2 too. If there was no inheritance, i would create something like: CREATE TRIGGER trig AFTER INSERT FOR EACH ROW WHEN (new.att1 = 1) BEGIN INSERT INTO test_2 VALUES (parent(:new.att1, :new.att2)); END; But since there is inheritance how can i know if it's a row of type "child1" or "child2"? According to http://asktom.oracle.com/~tkyte/Mutate/index.html i could save the rowid of the added row: maybe i can then check with something like: SELECT VALUE(t) FROM test t WHERE t.rowid = rowIdSavedOnPkg and then check if the result is an object of child1 or child2. Is that possible? And if yes, how? Thanks in advance.