如何向类型添加值以便能够基于它进行数据库分段?

How can I add values to a type to be able to do a database fragmentation based on it?

假设我创建了以下内容table:

CREATE TABLE MYTABLE
(COLUMN1 INT NOT NULL,
COLUMN2 myType NOT NULL);

我想创建一个名为 myType 的类型,它只能有 4 个值,例如 "blue" 、 "white" 、 "green" 和 "red".

我应该这样创建它吗:

CREATE TYPE myType AS OBJECT
( 
name VARCHAR NOT NULL
);

然后用这些值填充它:

INSERT INTO myType (name)
VALUES ("blue", "red", "green" , "white");

如果我这样做,并且我想将值插入 table MYTABLE,我如何指定我想要 select 的类型? 我是否能够根据 myType 的 4 个值对 MYTABLE 进行水平分段?

为什么要使用类型?一个简单的列就足够了,使用 CHECK CONSTRAINT 来强制执行这些值:

CREATE TABLE MYTABLE
(COLUMN1 INT NOT NULL,
    COLUMN2 varchar2(10) NOT NULL
    check (column2 in (('blue', 'red', 'green' , white'))
);

" will I be able to do a horizontal fragmentation of MYTABLE"

是的。

CREATE TABLE MYTABLE
(COLUMN1 INT NOT NULL,
    COLUMN2 varchar2(10) NOT NULL
    check (column2 in ('blue', 'red', 'green' , 'white'))
)
 partition by list (column2) 
 (
     partition p_blue
        values ('blue' )
    , partition p_red
        values ('red')
    , partition p_green
        values ('green')
    , partition p_white
        values ('white')
);