陈老师:1415968548 郑老师:2735197625 乐老师:354331153
客服热线:
19941464235/19906632509(微信同号)

客服微信

【PostgreSQL PGCE-092题目解析-2】PG中创建sequence时指定了owned to table.column,在drop table***cascade时, sequence不会被删除。

作者:炎燚小寶
原创
发布时间:2024-01-11 09:22
浏览量:186

考试科目PGCE-E-091

考试题量:44 道单项选择题、29 道多项选择题(每题 2 分)

通过分数:60%

考试时间:60min

本文为云贝教育刘峰(微信:yunbee_DBA)原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。




PG中创建sequence时指定了owned to table.column,在drop table***cascade时,sequence不会被删除。

A、正确

B、错误

参考答案:B




解析

在 PostgreSQL 中,当您使用 owned by 子句为序列指定了所有者时,即使使用 CASCADE 选项删除表,序列也会被自动删除。这是 PostgreSQL 的一项便利功能,确保在删除表时,与表相关联的序列也被删除。


一、序列字段为int

以下是一个示例:

-- 创建表和序列
CREATE TABLE example_table (
    id int PRIMARY KEY,
    data VARCHAR(100)
);

-- 为序列指定所有者
CREATE SEQUENCE example_table_id_seq OWNED BY example_table.id;

--查看序列信息
select * from pg_sequence where seqrelid='example_table_id_seq'::regclass::oid;

--查看序列当前值
select currval('example_table_id_seq');

--查看下一个序列值
select currval('example_table_id_seq');



-- 删除表及其依赖项,包括序列
DROP TABLE example_table CASCADE;

--查看序列信息
select nextval('example_table_id_seq');
报错:ERROR: relation "example_table_id_seq" does not exist


在这个例子中,使用 CASCADE 删除表时,序列 example_table_id_seq 也会被自动删除。

总体而言,当使用 owned by 子句为序列指定所有者时, CASCADE 删除表会同时删除与表关联的序列,减少了手动管理的工作。


二、序列字段为serial

如果创建表时指定字段为serial,PG会自动在列上创建一个序列,命令格式:表名_字段名_seq

-- 创建表和序列
CREATE TABLE example_table (
    id SERIAL PRIMARY KEY,
    data VARCHAR(100)
);

--查看表结构
\d example_table
Table "public.example_table"
 Column |           Type         | Collation | Nullable | Default
--------+------------------------+-----------+----------+-------------------------------------------
   id   | integer              | | not null  | nextval('example_table_id_seq'::regclass)
  data  | character varying(100) |           |          |
Indexes:
    "example_table_pkey" PRIMARY KEY, btree (id)


-- 插入一些数据
INSERT INTO example_table (data) VALUES ('Example 1'), ('Example 2');


PostgreSQL PGCE考试为理论考试,需通过两门考试才能拿到“PostgreSQL PGCE证书”。

以下是PostgreSQL官网的考试费,可以添加云贝教育的课程顾问老师微信19941464235或者19906632509,咨询有优惠

PostgreSQL证书如下 合格考生公布:考后不超过 5 个工作日  “开源软件联盟 PostgreSQL 分会”公众号发布  证书寄送:考后统一寄送至培训机构)

云贝教育有专业的PostgreSQL PGCE认证培训课程,想快速通过考试的同学可以扫码联系老师咨询(点击文字转跳至PostgreSQL PGCE纲)