我有一个表,它有一个名为"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;