PostgreSQL – 串行
PostgreSQL 有一种特殊的数据库对象生成器,称为 SERIAL。它用于生成通常用作表的主键的整数序列。
Syntax: variable_name SERIAL
创建表时,可以按如下方式创建此整数序列:
CREATE TABLE table_name(
id SERIAL
);
通过将 SERIAL 分配给 id 列,PostgreSQL 执行以下操作:
- 初始步骤生成整数序列,其中下一个默认值取决于列的值。
- 由于 SERIAL 总是生成一个整数序列,因此重要的是设置没有空值作为 ID 添加到任何列。这是通过添加 NOT NULL 约束来完成的。
- 最后,需要为 ID 列设置序列的所有者。如果删除列或表,这些 ID 会自动删除。
PostgreSQL 支持 3 种串行伪类型,即 SMALLSERIAL、SERIAL 和 BIGSERIAL,它们具有以下特点:Name Storage Size Range SMALLSERIAL 2 bytes 1 to 32, 767 SERIAL 4 bytes 1 to 2, 147, 483, 647 BIGSERIAL 8 bytes 1 to 9, 223, 372, 036, 854, 775, 807
示例 1:
首先,我们将创建一个以 id 列作为 SERIAL 列的动物表,如下所示:
CREATE TABLE animals(
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL
);
现在,在将值插入表时,可以使用以下任何命令:
INSERT INTO animals(name)
VALUES('Dog');
或者,
INSERT INTO animals(id, name)
VALUES(DEFAULT, 'Dog');
所以让我们使用下面的命令向我们的动物表添加一些行:
INSERT INTO animals(name)
VALUES
('Dog'),
('Cat'),
('Cow'),
('Tiger'),
('Snake'),
('Bull');
现在使用以下命令检查 id 是否自动分配给每一行:
SELECT * FROM animals;
输出:
示例 2:
首先,我们将创建一个带有 id 列作为 SERIAL 列的水果表,如下所示:
CREATE TABLE fruits(
id SERIAL PRIMARY KEY,
name VARCHAR NOT NULL
);
现在,在将值插入表时,可以使用以下任何命令:
INSERT INTO fruits(name)
VALUES('Apple');
或者,
INSERT INTO fruits(id, name)
VALUES(DEFAULT, 'Apple');
所以让我们使用下面的命令向我们的水果表添加一些行:
INSERT INTO fruits(name)
VALUES
('Apple'),
('Banana'),
('Cherry'),
('Mango'),
('Grapes'),
('Orange');
现在使用以下命令检查 id 是否自动分配给每一行:
SELECT * FROM fruits;
输出: