上载模式文件的目的

时间:2016-01-27 01:26:28

标签: sql postgresql database-schema ddl search-path

我正试图用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似乎就是这样做的。

1 个答案:

答案 0 :(得分:0)

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

  

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

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

现在,术语“架构”用于两个不同的事情:

  1. 使用SQL DDL命令创建的常规数据库结构。
  2. 一个SCHEMA,类似于文件系统中的目录。
  3. 这两个词恰好相同,但一个与另一个无关。

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