2013-05-16 41 views
0

我創建表,以便:約束導致的錯誤,但儘管這樣,AUTO_INCREMENT遞增

CREATE TABLE mytable(
    name CHARACTER VARYING CONSTRAINT exact_11char CHECK(CHAR_LENGTH(name) = 11) , 
    age INTEGER 
) 

然後加入ID PRIMARY KEY

ALTER TABLE mytable ADD COLUMN id BIGSERIAL PRIMARY KEY 

然後,在列試圖插入name數據,當其性格長度不是11,從CONSTRAINT發生錯誤。好的,但是,id列序列在每次嘗試失敗時都會增加。

如何使:失敗(原因CONSTRAINT)嘗試,而不是遞增auto_inceremented列?

PostgreSQL的版本是:9.2

+1

搜索[無縫序列](https://www.google.com.br/search?q=postgresql+gapless+sequence&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla :en-US:非官方&client = firefox-a) –

+0

@Clodoaldo ---謝謝。 – RIKI

+0

你爲什麼要這樣?生成PK值沒有任何意義,因此根本不管生成什麼值。節省自己很多麻煩,而忽略這一點。 –

回答

2

由於操作序列是非事務。所以在PostgreSQL中沒有簡單的方法來停止相應插入失敗時序列的增量操作。 檢查鏈接以創建無間隙序列。

Gapless Sequences for Primary Keys

相關問題