使用navicat创建postgresql数据库的表时如何设定主键自增?

我们知道,在navicat中MySQL 里面有auto_increment 自增字段PostgreSQL
没有自增字段这一说法,但是有单独的对象:序列。 可以用序列或者其他方法来是实现这样的语法。或者设置某一列的默认值为sequence的值即可

在MySQL当中,我们可以通过勾选来实现ID自增,我们的navcat如下图所示:

  `area_id` int(10) unsigned NOT NULL AUTO_INCREMENT,

image

在PostgreSQL当中,我们的navcat如下图所示

image

在PostgreSQL当中,我们实现ID自增首先创建一个关联序列序列

打开navcat查询列表,去创建一个序列

CREATE SEQUENCE upms_log_id_seq START 10;

image.gif

然后在字段默认值里设 nextval(' upms_log_id_seq')即可。

image

实际生成自增主键表结构

"area_id" int4 NOT NULL DEFAULT nextval('upms_area_id_seq'::regclass),

image

)

PostgreSQL主要优势:

  • PostgreSQL完全免费,而且是BSD协议,如果你把PostgreSQL改一改,然后再拿去卖钱,也没有人管你,这一点很重要,这表明了PostgreSQL数据库不会被其它公司控制。oracle数据库不用说了,是商业数据库,不开放。而MySQL数据库虽然是开源的,但现在随着SUN被oracle公司收购,现在基本上被oracle公司控制,其实在SUN被收购之前,MySQL中最重要的InnoDB引擎也是被oracle公司控制的,而在MySQL中很多重要的数据都是放在InnoDB引擎中的,反正我们公司都是这样的。所以如果MySQL的市场范围与oracle数据库的市场范围冲突时,oracle公司必定会牺牲MySQL,这是毫无疑问的。

  • 与PostgreSQl配合的开源软件很多,有很多分布式集群软件,如pgpool、pgcluster、slony、plploxy等等,很容易做读写分离、负载均衡、数据水平拆分等方案,而这在MySQL下则比较困难。

  • PostgreSQL源代码写的很清晰,易读性比MySQL强太多了,怀疑MySQL的源代码被混淆过。所以很多公司都是基本PostgreSQL做二次开发的。

  • PostgreSQL在很多方面都比MySQL强,如复杂SQL的执行、存储过程、触发器、索引。同时PostgreSQL是多进程的,而MySQL是线程的,虽然并发不高时,MySQL处理速度快,但当并发高的时候,对于现在多核的单台机器上,MySQL的总体处理性能不如PostgreSQL,原因是MySQL的线程无法充分利用CPU的能力。

 

原文链接:https://www.jianshu.com/p/9687c9e66cec

Logo

更多推荐