2014-02-09 35 views
0

定義主鍵我有一種像DB2:無法在類型表DB2

create type tipo_vehiculo as(
    Descripcion varchar(30) 
)MODE DB2SQL; 

,並必須建立與PK的表,使用OID作爲PK不工作,所以我嘗試創建它放在桌子上,但IBM的語法不爲我工作...

create table JORGEMONGE."tipo_vehiculo_t" of tipo_vehiculo(
    "id_tipo_vehiculo_t" INT NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE -2147483648 MAXVALUE 2147483647 CACHE 20), 
    ref is oid user generated 
); 

意外的標記「整數」之後發現「id_tipo_vehiculo_t」。預期標記可能包括: 「使用選項」 .. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 30年​​4月17日

也TRED:

create table JORGEMONGE."tipo_vehiculo_t" of tipo_vehiculo(
    "id_tipo_vehiculo_t" INT WITH OPTIONS NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE -2147483648 MAXVALUE 2147483647 CACHE 20), 
    ref is oid user generated 
); 

,但得到:

在「ehiculo integer with」後面找到了一個意外的令牌「選項」。預期的標記可能包括:「」.. SQLCODE = -104,SQLSTATE = 42601,DRIVER = 4.17.30

任何想法設置該類型表上的pk?

回答

0

不知道如何設置主鍵上的標識規範,但我知道如何設置主鍵。你需要把它變成你的類型的一部分。

create type tipo_vehiculo as(Descripcion varchar(30), id_tipo_vehiculo INTEGER) MODE DB2SQL; 

create table JORGEMONGE."tipo_vehiculo_t" of tipo_vehiculo(ref is oid user generated, "id_tipo_vehiculo_t" WITH OPTIONS NOT NULL, PRIMARY KEY(id_tipo_vehiculo) ); 

參見:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.sql.ref.doc/doc/r0000927.html?cp=SSEPGG_9.7.0%2F2-10-6-90

不過,我想指出的是,由於一個OID列反正表自動生成的(這是什麼ref is oid user generated部分的意思),這可能是更好的使用作爲主要鍵。

編輯:我已經想出瞭如何使用oid做到這一點。假設你把上面的建議,並使用對象的引用作爲主鍵,它會是這樣的

create type JORGEMONGE."tipo_vehiculo" as(Descripcion varchar(30)) MODE DB2SQL; 

create table JORGEMONGE."tipo_vehiculo_t" of JORGEMONGE."tipo_vehiculo"(ref is id_tipo_vehiculo user generated, PRIMARY KEY(id_tipo_vehiculo) ); 

create sequence JORGEMONGE."id_tipo_vehiculo_seq" as ref(JORGEMONGE."tipo_vehiculo_t"); 

create trigger JORGEMONGE.gen_id_tipo_vehiculo no cascade before insert on JORGEMONGE."tipo_vehiculo_t" referencing new as new for each row mode db2sql set new.id_tipo_vehiculo = next value for JORGEMONGE.id_tipo_vehiculo_seq; 

文檔是在這裏:http://www-01.ibm.com/support/knowledgecenter/SSEPGG_9.7.0/com.ibm.db2.luw.admin.structypes.doc/doc/t0006621.html