gpt4 book ai didi

postgresql - Postgres FK 声明引用客户名称而不是类型?

转载 作者:行者123 更新时间:2023-11-29 13:02:42 24 4
gpt4 key购买 nike

我不太使用 Postgres(我以前使用其他数据库)所以最近我在 pgAdmin 中查看一个数据库并看到一个奇怪的模式语法,我在文档中找不到任何东西并且想了解一下它:

所以我看到了这个语法:

CREATE TABLE table1
(
table1_id serial NOT NULL,
table2_fk_id <b>t2_id</b> 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 相关的东西?

最佳答案

要确定,运行:

SELECT *
FROM pg_type
WHERE typname = 't2_id'

如果 typtyped 它是一个域,用 CREATE DOMAIN 创建.
或者在 pgAdmin 中只检查“对象浏览器”中的域列表。

是的,这有点与 pgAdmin 相关,因为它显示了一个 serial列本身。 serial 不是实际类型,基础类型是 integer。因此,您的域类型也必须基于 integer 以允许使用外键,这需要匹配基本类型。详情:
Safely and cleanly rename tables that use serial primary key columns in Postgres?

关于postgresql - Postgres FK 声明引用客户名称而不是类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24741786/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com