Saturday, December 10, 2011

查詢 informix sequence的值

通常,會在資料庫 table 的 Primary Key 欄位,用資料庫預設的流水號,

指令為:

CREATE SEQUENCE table_seq;

在塞值時,就會用 table_seq.nextval ,取得該流水號

INSERT INTO table ( index, name, value )

VALUES( table_seq.nextval , ‘fooName’, ‘fooValue' )

但當有需求是,要把新增的這一筆資料,再query出來,秀在畫面時

可以用新增的資料當作查詢條件,把該筆資料查出來

但,不能保證,只會查該筆資料,有可能會有重覆類似的資料查出來

這時,最保險的做法是:如果我能知道,資料庫產生的sequence的值,去做查詢

做法( 以informix為例 ):

//從 systables 查出 流水序號的

String nextValSql =

"SELECT table_seq.nextval FROM systables WHERE tabid=1" ; 

int sequence_number = getJdbcTemplate().queryForInt(nextValSql);

記得:流水號的型別是 int