Die*_*ego 1 sql postgresql ddl pgadmin-4
我正在学习 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);
Run Code Online (Sandbox Code Playgroud)
我尝试在 PgAdmin 4 中右键单击新数据库 -> 创建脚本,它会打开查询编辑器,我复制粘贴代码并执行它,但它返回:
ERROR: CREATE DATABASE cannot be executed from a function or multi-command string
SQL state: 25001
Run Code Online (Sandbox Code Playgroud)
我还尝试直接从 PgAdmin 工具菜单使用查询工具,得到相同的结果。
数据库创建得很好。但是如果您想在新数据库中创建对象,则必须连接到它。在任何客户端中,包括 pgAdmin4。
CREATE DATABASE并且您不能在事务内部运行。必须自己承担。一次执行多个命令会自动包装到 pgAdmin 中的单个事务中。
您必须CREATE DATABASE mydb;自行执行(例如,仅选择该行并F5在连接到任何数据库时按下,甚至是维护数据库“postgres”。然后 在 pgadmin4 主窗口/选项卡的对象浏览器中单击“数据库” ,点击F5刷新视图,单击新的数据库,使用 Flash 图标打开一个新的查询工具(在新窗口/选项卡中)并在那里执行脚本的其余部分。
psql脚本通过在同一会话中创建新数据库后使用元命令\c连接到新数据库来进行管理。
旁白:
“数据库”对于数据库来说并不是一个好名字。
CREATE TYPE AS (...), 只是CREATE TABLE (...)。不AS。
而且您通常不想使用数据类型CHAR(18)。看:
| 归档时间: |
|
| 查看次数: |
4370 次 |
| 最近记录: |