2010-02-25 74 views
4

如果我有一個類型x_typ和亞型y_typ,是有可能創造x_typ的一個目的表,但把一個約束對y_typ之一即屬性約束上亞型屬性(甲骨文)

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

由於

回答

1

我能來最接近的是...

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); 
+0

嗨,我們被告知要使用這個語法'創建的x_typ'即不加列對象表中,而是每一行都是一個表x_table個人實例ce,但所有的例子(包括你的)創建一個列來檢查......謝謝。 – joec 2010-02-26 18:07:46