
使用navicat創(chuàng)建postgresql數(shù)據(jù)庫的表時如何設(shè)定主鍵自增?
我們知道,在navicat中MySQL 里面有auto_increment 自增字段PostgreSQL
沒有自增字段這一說法,但是有單獨的對象:序列。 可以用序列或者其他方法來是實現(xiàn)這樣的語法。或者設(shè)置某一列的默認值為sequence的值即可
在MySQL當中,我們可以通過勾選來實現(xiàn)ID自增,我們的navcat如下圖所示:
`area_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
在PostgreSQL當中,我們的navcat如下圖所示
在PostgreSQL當中,我們實現(xiàn)ID自增首先創(chuàng)建一個關(guān)聯(lián)序列序列
打開navcat查詢列表,去創(chuàng)建一個序列
CREATE SEQUENCE upms_log_id_seq START 10;

然后在字段默認值里設(shè) nextval(' upms_log_id_seq')即可。
實際生成自增主鍵表結(jié)構(gòu)
"area_id" int4 NOT NULL DEFAULT nextval('upms_area_id_seq'::regclass),
)
PostgreSQL主要優(yōu)勢:
PostgreSQL完全免費,而且是BSD協(xié)議,如果你把PostgreSQL改一改,然后再拿去賣錢,也沒有人管你,這一點很重要,這表明了PostgreSQL數(shù)據(jù)庫不會被其它公司控制。oracle數(shù)據(jù)庫不用說了,是商業(yè)數(shù)據(jù)庫,不開放。而MySQL數(shù)據(jù)庫雖然是開源的,但現(xiàn)在隨著SUN被oracle公司收購,現(xiàn)在基本上被oracle公司控制,其實在SUN被收購之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的數(shù)據(jù)都是放在InnoDB引擎中的,反正我們公司都是這樣的。所以如果MySQL的市場范圍與oracle數(shù)據(jù)庫的市場范圍沖突時,oracle公司必定會犧牲MySQL,這是毫無疑問的。
與PostgreSQl配合的開源軟件很多,有很多分布式集群軟件,如pgpool、pgcluster、slony、plploxy等等,很容易做讀寫分離、負載均衡、數(shù)據(jù)水平拆分等方案,而這在MySQL下則比較困難。
PostgreSQL源代碼寫的很清晰,易讀性比MySQL強太多了,懷疑MySQL的源代碼被混淆過。所以很多公司都是基本PostgreSQL做二次開發(fā)的。
-
PostgreSQL在很多方面都比MySQL強,如復(fù)雜SQL的執(zhí)行、存儲過程、觸發(fā)器、索引。同時PostgreSQL是多進程的,而MySQL是線程的,雖然并發(fā)不高時,MySQL處理速度快,但當并發(fā)高的時候,對于現(xiàn)在多核的單臺機器上,MySQL的總體處理性能不如PostgreSQL,原因是MySQL的線程無法充分利用CPU的能力。
1.jpg
