在之前的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語句全面測試通過!...