0

我第一次尝试使用 postgres 制作表格,而我看到的示例有点让我失望。在创建架构时,我有一个 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

现在,当需要创建表时,我想这样做:

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

文件的上传schema.sql让我感到困惑。文件里面的所有信息是做什么用的。我想通过上传模式我提供模型来创建表,但运行create table schema.orders似乎就是这样做的。

4

1 回答 1

0

您所说的“上传”实际上是执行一个脚本文件(其中包含 SQL DDL 命令)。

我想通过上传模式我提供模型来创建表

您正在通过执行该脚本来创建表。第二个CREATE TABLE命令几乎但不完全相同。关键区别(除了缺少的注释):模式限定的表名。而且您的架构恰好被命名为“架构”,这是一个非常糟糕的主意,但允许。

现在,术语“模式”用于两种不同的事物:

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

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

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

于 2016-01-27T04:10:11.077 回答