I am having the following issue that I am not sure how to solve:
I have a base type:
create type base_typ as object (
id number,
f1 number) not final;
/
and a derived one
create type d1_typ under base_typ (
f2 number);
/
Now I create a table of the base type
create table my_table of base_typ;
From the oracle documentation, a type doesn't have integrity
constraint but you can add some on the table, so for example I can
say:
alter table my_table modify f1 constraint my_table_n1 not null;
Using substitutability, it is possible to do
insert into my_table values (d1_typ(1, 2, 3));
How can I put a constraint on the table saying for example that f2 >
f1 ? I cannot define it at the type level and I don't know how to
define it at the table level since it is a table of 'base_typ'.
I know that if I create a table of type d1_typ then I can simply
define the constraint, but that is not the point... there may be
d2_typ, d3_typ... in the future and that would be impracticle to
create that many tables (especially if there is another table that
references my_table).
Thanks for any help.