views:

27

answers:

1

If i have a type x_typ and subtype y_typ, is it possible to create a an object table of x_typ but put a constraint on one of the y_typ attributes i.e.

create table x_table of x_typ (
   constraint constr_y check (y_typ.attribute1 < 5);
);

Thanks

+1  A: 

The closest I can come is...

CREATE OR REPLACE TYPE x_typ AS OBJECT (record_type varchar2(1)) NOT FINAL;
/

CREATE OR REPLACE TYPE y_typ UNDER x_typ (attribute1 number) ;
/

create table x_table (x_col x_typ);


alter table x_table add constraint x_cons 
  check ( 1 = case when x_col is of (y_typ) then 
      treat (x_col as y_typ).attribute1 else 1 end);
Gary
Hi, we have been told to use this syntax `create table x_table of x_typ` i.e. not adding column objects to the table but rather each row is an individual instance, but all the examples (including yours) create a column to check... Thanks.
joec