PostgreSQL AUTO INCREMENT(自动增长)

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PostgreSQL AUTO INCREMENT(自动增长)相关的知识,希望对你有一定的参考价值。

PostgreSQL AUTO INCREMENT(自动增长)

AUTO INCREMENT(自动增长) 会在新记录插入表中时生成一个唯一的数字。
PostgreSQL 使用序列来标识字段的自增长,数据类型有 smallserial、serial 和 bigserial 。这些属性类似于 mysql 数据库支持的 AUTO_INCREMENT 属性。
使用 MySQL 设置自动增长的语句如下:

CREATE TABLE IF NOT EXISTS `hgdb_tbl`(
   `hgdb_id` INT UNSIGNED AUTO_INCREMENT,
   `hgdb_title` VARCHAR(100) NOT NULL,
   `hgdb_author` VARCHAR(40) NOT NULL,
   `submission_date` DATE,
   PRIMARY KEY ( `hgdb_id` ))ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL 是用 AUTO_INCREMENT 这个属性来标识字段的自增。
PostgreSQL 使用序列来标识字段的自增长:

CREATE TABLE hgdb(
    id serial NOT NULL,
    alttext text,
    imgurl text)

SMALLSERIAL、SERIAL 和 BIGSERIAL 范围:

伪类型存储大小范围
SMALLSERIAL2字节1 到 32,767
SERIAL4字节1 到 2,147,483,647
BIGSERIAL8字节1 到 922,337,2036,854,775,807

语法

SERIAL 数据类型基础语法如下:

CREATE TABLE tablename (
   colname SERIAL);

实例

假定我们要创建一张 COMPANY 表,并创建下面几个字段:

highgo=# CREATE TABLE COMPANY(
   ID  SERIAL PRIMARY KEY,
   NAME           TEXT      NOT NULL,
   AGE            INT       NOT NULL,
   ADDRESS        CHAR(50),
   SALARY         REAL);

现在往表中插入几条记录:

INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ('张三', 32, '济南', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '李四', 25, '青岛', 15000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '王五', 23, '北京', 20000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '赵六', 25, '上海 ', 65000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '小明', 27, '广州', 85000.00 );
INSERT INTO COMPANY (NAME,AGE,ADDRESS,SALARY)
VALUES ( '小红', 22, '深圳', 45000.00 );
INSERT INTO COMPANY   (NAME,AGE,ADDRESS,SALARY) 
VALUES ( '小强', 24, '成都', 10000.00 );

查看 COMPANY 表的记录如下:

highgo=# select  * from company ;
 id | name | age |                       address                        | salary 
----+------+-----+------------------------------------------------------+--------
  1 | 张三 |  32 | 济南                                                 |  20000
  2 | 李四 |  25 | 青岛                                                 |  15000
  3 | 王五 |  23 | 北京                                                 |  20000
  4 | 赵六 |  25 | 上海                                                 |  65000
  5 | 小明 |  27 | 广州                                                 |  85000
  6 | 小红 |  22 | 深圳                                                 |  45000
  7 | 小强 |  24 | 成都                                                 |  10000
(7 行记录)

以上是关于PostgreSQL AUTO INCREMENT(自动增长)的主要内容,如果未能解决你的问题,请参考以下文章

mongodb php auto increment 自增

MySQL中auto_increment的基本特性

PostgreSQL 与 NHibernate 的映射

Mysql设置auto_increment_increment和auto_increment_offset

InnoDB引擎的auto_increment字段和MyISAM引擎的auto_increment字段的异同

MySQL 中有关auto_increment及auto_increment_offset方面的介绍