从其他列值自动生成列值,并用作PRIMARY KEY



我有一个表,它有一个名为"source"one_answers"id"的列。此表是从打开的数据数据库中填充的。"id"不可能是唯一的,因为我的数据来自其他拥有自己id系统的数据库。拥有相同的id但数据却截然不同,这确实存在风险。

我想创建另一列,将source和id合并为一个值。

"openDataA" + 123456789 -> "openDataA123456789"
"openDataB" + 123456789 -> "openDataB123456789"

我看到过使用||和函数连接值的例子。这很好,但我想把第三列作为我的PRIMARY KEY,以避免重复,并创建一个真正唯一的id,我可以在不需要太多计算的情况下查询它,并且可以用作其他表的外键约束。

我认为复合类型是我想要的,但我不想每次都手动设置值,而是想通过只设置"source"one_answers"id"来自动获取它们

我是postgresql的新手,所以欢迎任何帮助。非常感谢。

您可以在表中有一个复合键:

CREATE TABLE mytable (
    source VARCHAR(10),
    id VARCHAR(10),
    PRIMARY KEY (source, id)
);

如果你真的想要一个连接的列,你可以创建一个视图来显示它:

CREATE VIEW myview AS 
SELECT *, source || id AS primary_key
FROM   mytable;

相关内容

  • 没有找到相关文章

最新更新