上传架构文件的目的

Purpose of uploading a schema file

我第一次尝试使用 postgres 制作 table,我看到的例子有点让我失望。在创建模式时,我有一个包含我的模式的 schema.sql 文件,如下所示:

CREATE TABLE IF NOT EXISTS orders
(
    order_id INTEGER NOT NULL,
    order_amount INTEGER NOT NULL
);

COMMENT ON COLUMN orders.order_id IS 'The order ID';
COMMENT ON COLUMN orders.order_amount IS 'The order amount';

现在我将通过执行以下操作来上传该架构: psql -d mydb -f /usr/share/schema.sql

现在是时候创建 table 我想做这样的事情了:

create table schema.orders(
   order_id   INT       NOT NULL,
   order_amount INT     NOT NULL
 );

schema.sql 文件的上传让我感到困惑。文件中的所有信息用于什么。我认为通过上传模式我提供了创建 table 的模型,但 运行 create table schema.orders 似乎正在这样做。

你所说的"upload"实际上是在执行一个脚本文件(里面有SQL个DDL命令)

I thought by uploading the schema i'm providing the model to create the table

您正在通过执行该脚本创建 table。第二个 CREATE TABLE 命令几乎但不完全相同。关键区别(除了缺少的注释):schema-qualified table 名称。您的架构恰好被命名为 "schema",这是一个非常糟糕的主意,但允许。

现在,术语 "schema" 用于两种不同的事物:

  1. 使用 SQL DDL 命令创建的通用数据库结构。
  2. 一个SCHEMA类似于文件系统中的目录。

两者的术语恰好相同,但一个与另一个无关。

根据模式搜索路径,第一次调用 CREATE TABLE 可能会也可能不会在不同的模式中创建另一个 table。你需要了解搜索路径在Postgres中的作用:

  • How does the search_path influence identifier resolution and the "current schema"