我正试图用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
似乎就是这样做的。
答案 0 :(得分:0)
您所谓的“上传”实际上是在执行脚本文件(其中包含SQL DDL命令)。
我想通过上传模式我提供模型来创建表
您正在通过执行该脚本来创建表。第二个CREATE TABLE
命令差不多完全相同。重要区别(除了缺少的注释):模式限定的表名。而你的架构碰巧被命名为“架构”,这是一个非常糟糕的主意,但允许。
现在,术语“架构”用于两个不同的事情:
SCHEMA
,类似于文件系统中的目录。这两个词恰好相同,但一个与另一个无关。
根据架构搜索路径,CREATE TABLE
的第一次调用可能会或可能不会在另一个架构中创建另一个表。您需要了解Postgres中搜索路径的作用: