【发布时间】:2019-09-06 09:39:24
【问题描述】:
我正在学习 DDL 以使用 Postgresql 10 创建和定义 SQL 数据库。
我在.sql 文件中有类似以下 SQL 代码的内容,我想在 psql 或 PgAdmin 4 中输入它,只是为了测试语法并查看数据库结构:
CREATE DATABASE database;
CREATE TYPE t_name AS
( first VARCHAR(30),
last VARCHAR(60)
);
CREATE TABLE telephone_m
( tnumber VARCHAR(15) NOT NULL UNIQUE
);
CREATE TABLE people
( curp CHAR(18) NOT NULL PRIMARY KEY,
pname t_name NOT NULL,
birth_date DATE NOT NULL,
telephone_m VARCHAR(15) REFERENCES telephone_m
);
CREATE TABLE clients
( curp CHAR(18) NOT NULL PRIMARY KEY,
cid SERIAL NOT NULL REFERENCES cards,
clocation VARCHAR(29)
) INHERITS (people);
CREATE TABLE cards
( cid BIGSERIAL NOT NULL PRIMARY KEY,
curp CHAR(18) NOT NULL REFERENCES clients,
trips SMALLINT,
distance NUMERIC,
points NUMERIC
);
CREATE TABLE drivers
( curp CHAR(18) NOT NULL PRIMARY KEY,
rfc CHAR(22) NOT NULL UNIQUE,
adress t_adress NOT NULL
) INHERITS (people);
我尝试在 PgAdmin 4 中右键单击一个新数据库 -> 创建脚本,它会打开查询编辑器,我复制粘贴我的代码并执行它,但它返回:
ERROR: CREATE DATABASE cannot be executed from a function or multi-command string
SQL state: 25001
我也尝试过直接从 PgAdmin 工具菜单中使用查询工具,结果相同。
【问题讨论】:
-
Erwin 在他的回答中得到了正确的答案,但我还要指出您正在创建一个数据库(命名不佳的数据库),但您正在创建的所有表都不在该数据库中。创建后,您需要连接到它。
标签: sql postgresql ddl pgadmin-4