数据库
首页 > 数据库> > PostgreSQL创建自增列

PostgreSQL创建自增列

作者:互联网

PostgreSQL SERIAL创建自增列

PostgreSQL序列是一种特殊的用于生产整数序列数据库对象。序列通常用于主键列,与mysql的AUTO_INCREMENT 概念类似。创建表时使用serial伪类型定义序列:

CREATE TABLE table_name(
    id SERIAL  
);

赋值serial伪类型给id列,PostgreSQL将执行下列步骤:

相当于执行了下面语句:

CREATE SEQUENCE table_name_id_seq;
 
CREATE TABLE table_name (
    id integer NOT NULL DEFAULT nextval('table_name_id_seq')
);
 
ALTER SEQUENCE table_name_id_seq
OWNED BY table_name.id;

PostgresQL SERIAL示例

特别需要注意的是,serial列不会隐式在列上创建索引或是该列为主键列。当然可以很容易使用PRIMARY KEY关键字增加相应约束。

CREATE TABLE fruits(
   id SERIAL PRIMARY KEY,
   name VARCHAR NOT NULL
);

在insert语句中,可以忽略对应列或使用default关键字都可以给serial赋值

INSERT INTO fruits(name) VALUES('orange');

或者:

INSERT INTO fruits(id,name) VALUES(DEFAULT,'apple');

使用pg_get_serial_sequence函数可以获得serial列的序列名称:

pg_get_serial_sequence('table_name','column_name')

通过给currval函数传入序列名称可以获得当前生成的值

SELECT currval(pg_get_serial_sequence('fruits', 'id'));

当执行insert语句时,你想获得序列生成的值,可以在insert语句中使用RETURNING id子句实现。下面语句插入一行新的记录,并返回id列生成的值:

INSERT INTO fruits(name) VALUES('banana')
RETURNING id;

结果如下:

id
----
3
(1 row)

原文链接

标签:PostgreSQL,name,创建,增列,fruits,序列,table,serial,id
来源: https://www.cnblogs.com/impromptu/p/15699188.html