PostgreSQL:序列的使用方法
我参考了下一页。
【PostgreSQL】创建序列(serial),并设置值。
我们将使用下一个数据库。
用户:scott
密码:tiger123
数据库:db_test
制作方法
postgres=# CREATE ROLE scott login password 'tiger123';
CREATE ROLE
postgres=# create database db_test;
CREATE DATABASE
postgres=# alter database db_test owner to scott;
ALTER DATABASE
初始状态。
$ psql -U scott db_test
psql (15.2)
"help"でヘルプを表示します。
db_test=> \dt
リレーションが見つかりませんでした。
db_test=> \d
リレーションが見つかりませんでした。
建立一个桌子
db_test=> CREATE TABLE literature
(
seq serial NOT NULL, -- serial列
title character(10),
CONSTRAINT pk_llx PRIMARY KEY (seq)
);
CREATE TABLE
这个时候的状态 (Zhè ge shí de
db_test=> \dt
リレーション一覧
スキーマ | 名前 | タイプ | 所有者
----------+------------+----------+--------
public | literature | テーブル | scott
(1 行)
db_test=> \d
リレーション一覧
スキーマ | 名前 | タイプ | 所有者
----------+--------------------+------------+--------
public | literature | テーブル | scott
public | literature_seq_seq | シーケンス | scott
(2 行)
数据的插入
db_test=> insert into literature(title) values('坊っちゃん');
insert into literature(title) values('草枕');
insert into literature(title) values('それから');
insert into literature(title) values('三四郎');
INSERT 0 1
INSERT 0 1
INSERT 0 1
INSERT 0 1
这种情况下的状态
db_test=> select * from literature;
seq | title
-----+-----------------
1 | 坊っちゃん
2 | 草枕
3 | それから
4 | 三四郎
(4 行)
db_test=> select * from literature_seq_seq;
last_value | log_cnt | is_called
------------+---------+-----------
4 | 29 | t
(1 行)
获取序列的值
db_test=> select sequencename,last_value from pg_sequences;
sequencename | last_value
--------------------+------------
literature_seq_seq | 4
(1 行)
限定特定顺序并获取序列值
db_test=> select sequencename,last_value from pg_sequences where sequencename = 'literature_seq_seq';
sequencename | last_value
--------------------+------------
literature_seq_seq | 4
(1 行)
更改序列的值
db_test=> SELECT setval('literature_seq_seq',10);
setval
--------
10
(1 行)
序列的值
db_test=> select sequencename,last_value from pg_sequences;
sequencename | last_value
--------------------+------------
literature_seq_seq | 10
(1 行)
插入数据
db_test=> insert into literature(title) values('こころ');
insert into literature(title) values('明暗');
INSERT 0 1
INSERT 0 1
这种状态
db_test=> select * from literature;
seq | title
-----+-----------------
1 | 坊っちゃん
2 | 草枕
3 | それから
4 | 三四郎
11 | こころ
12 | 明暗
(6 行)
序列的值
db_test=> select sequencename,last_value from pg_sequences;
sequencename | last_value
--------------------+------------
literature_seq_seq | 12
(1 行)
请注意
在PostgreSQL 9.2.24版本中,无法使用pg_sequences。
您可以选择使用其他选项。
db_test=> select last_value from literature_seq_seq;
last_value
------------
4
(1 行)