cht電腦資訊SQL DB
adm Find login register

Postgresql vs mysql sequence

eliu
1 Postgresql vs mysql sequence
Promote 0 Bookmark 02008-01-04quote  

Postgresql 中 

CREATE TABLE tt ( 

kkk serial PRIMARY KEY,

); 

會自動產生 sequence

     public | tt_kkk_seq   | sequence 


kkk 這個 column 的 default value 為 nextval('tt_kkk_seq'::regclass)

因此如果 insert 時沒有設定 kkk 的 value,會自動產生 sequence 填入 

有時候我們想先抓 sequence 再 insert,因為我們還有其他的 table 也有 kkk 這個 column,也要填入一個 row。

這時候可以用 SELECT nextval('tt_kkk_seq')  產生 sequence。INSERT INTO tt 就必須 assign kkk。

 

MySQL 中是這樣弄

CREATE TABLE tt (
kkk MEDIUMINT NOT NULL AUTO_INCREMENT,
);

You can retrieve the most recent AUTO_INCREMENT value with the LAST_INSERT_ID() SQL function or the mysql_insert_id() C API function. These functions are connection-specific, so their return values are not affected by another connection which is also performing inserts.

 

Postgresql 的做法比較有彈性,可以先抓 sequence 再 insert,這對 programming 的 flow 規劃有很大的幫助。 

eliu
2
Promote 0 Bookmark 02009-06-08quote  

最近玩一下 MySQL 的 windows MySQL DB server + windows MySQL ODBC driver。發現 ODBC driver 不支援

  • CREATE TABLE
  • 以;隔開的多個 statement,只支援單一 query

這樣就沒辦法直接用 ODBC initialize database,不太方便。

Postgresql 就都沒問題,可以用 windows ODBC initialize database。

edited: 2

cht電腦資訊SQL DB
adm Find login register
views:11080