📜  PostgreSQL – 串行

📅  最后修改于: 2022-05-13 01:57:14.797000             🧑  作者: Mango

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,它们具有以下特点:

NameStorage SizeRange
SMALLSERIAL2 bytes1 to 32, 767
SERIAL4 bytes1 to 2, 147, 483, 647
BIGSERIAL8 bytes1 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;

输出: