【发布时间】:2014-07-14 16:59:13
【问题描述】:
我不经常使用 Postgres(我以前使用其他数据库)所以最近我在 pgAdmin 中查看一个数据库,看到一个奇怪的模式语法,我在文档中找不到任何东西,想知道一点它:
所以我看到了这个语法:
CREATE TABLE table1
(
table1_id serial NOT NULL,
table2_fk_id t2_id NOT NULL, -- what is this line?
...
CONSTRAINT fk_table2_chm FOREIGN KEY (table2_fk_id)
REFERENCES table2 (t2_id_col) MATCH SIMPLE
ON UPDATE RESTRICT ON DELETE RESTRICT
);
上面那条标记线是什么?似乎外键 col 而不是指定 int/int8 它正在指定自定义名称 t2_id?
而在上面引用的table2 pk 列中,类型为serial 并标记为t2_id_col。
这是一些奇特的语法吗?还是与 pgAdmin 相关的东西?
【问题讨论】:
-
t2_id可以是用户定义的类型或域。 -
您是添加
**还是在原始代码中添加的?因为那只是一个语法错误...... -
不抱歉,这只是为了突出显示该行,我已将其删除以避免混淆
-
如果
t2_id是一个以int为基本类型的域,则外键约束仍然有效。请修正问题中的误导性示例。 -
这不是异国情调,只是你不熟悉。
CREATE DOMAIN至少从 SQL-92 开始就成为 SQL 标准的一部分,并且除了 MySQL 之外的每个主要 SQL dbms 都支持它。
标签: postgresql types foreign-keys pgadmin