EsgynDB新版本之支援nullable主鍵

2021-09-24 09:29:25 字數 2689 閱讀 9495

在之前的esgyndb版本中,主鍵預設是非空的,如果建立表時主鍵字段未指定not null屬性,則建立表會報錯,當時可以通過cqd allow_nullable_unique_key_constraint 『on』;來臨時解決。在後續版本中esgyndb在實現上面做了一些調整,即如果建表時主鍵字段未指定not null屬性,則會在建表時自動給主鍵字段新增not null屬性。

sql>create table t7(a varchar(10), primary key (a));

--- sql operation complete.

sql>showddl t7;

create table trafodion.seabase.t7

( a varchar(10 bytes) character set utf8

collate default no default not null not droppable not serialized

, primary key (a asc)

) attributes aligned format namespace 'traf_rsrvd_3' ;

-- grant select, insert, delete, update, references on trafodion.seabase.t7 to db__root with grant option;

--- sql operation complete.

最近在專案中遇到一些從oracle源遷移過來的問題,oracle中定義為唯一索引(unique index),遷移到esgyndb預設也是唯一索引。

當然,從功能上面,這完全沒有問題,因為esgyndb本身也是完全能夠支援unique index的。但是,我們知道esgyndb底層儲存使用hbase,hbase的一大重要特性就是它是乙個key-value的儲存格式。我們一般會利用這一特點,在建立esgyndb表的時候能夠盡可能地考慮帶上主鍵。

所以我們會考慮把oracle的唯一索引轉換為esgyndb的主鍵(primary key)。但是,我們知道oracle中的unique index中的字段是可空的,即允許為空,而esgyndb中的主鍵預設不允許為空,因此esgyndb開發出了支援nullable可空的主鍵定義。

nullable主鍵定義的語法有兩種,

一、單字段nullable

sql>create table t8(a varchar(10) primary key nullable);

--- sql operation complete.

`sql>showddl t8;

create table trafodion.seabase.t8

( a varchar(10 bytes) character set utf8

collate default default null not serialized

, primary key nullable (a asc)

) attributes aligned format namespace 'traf_rsrvd_3'

;

或以下方式,

sql>create table t8(a varchar(10),primary key nullable(a));

--- sql operation complete.

sql>showddl t8;

create table trafodion.seabase.t8

( a varchar(10 bytes) character set utf8

collate default default null not serialized

, primary key nullable (a asc)

) attributes aligned format namespace 'traf_rsrvd_3'

;

二、組合欄位nullable

sql>create table t9(a varchar(10), b varchar(10), primary key nullable(a,b));

--- sql operation complete.

sql>showddl t9;

create table trafodion.seabase.t9

( a varchar(10 bytes) character set utf8

collate default default null not serialized

, b varchar(10 bytes) character set utf8

collate default default null not serialized

, primary key nullable (a asc, b asc)

) attributes aligned format namespace 'traf_rsrvd_3'

;

Appium新版本不再支援ByName定位了怎麼辦

org.openqa.selenium.invalidselectorexception locator strategy name is not supported for this session 是否很心痛,曾經的定位神器居然byname居然不再支援了,那我以前的指令碼可怎麼辦,此時你去各種技...

iOS檢查App新版本並更新新版本

檢查新版本 更新 第一種方法 檢查新版本 更新 dispatch async dispatch get global queue dispatch queue priority default,0 檢查新版本更新 void showalert void alertview uialertview a...

CowNewSQL發布新版本

cownewsql發布新版本了,這個版本的推出標誌著cownewsql能正式應用於開發實際了。本版更新列表 1 增加了對create table drop table create index和dropindex的支援。2 修改了n多bug,使用從各方收集到的近百條各種複雜的sql語句全面測試通過!...