我有一个表格,名为"来源"和" id"。此表由开放数据DB填充。 " ID"因为我的数据来自其他拥有自己id系统的数据库,所以不可能是独一无二的。拥有相同ID但真正不同的数据存在真正的风险。
我想创建另一个将源和id组合成单个值的列。
"openDataA" + 123456789 -> "openDataA123456789"
"openDataB" + 123456789 -> "openDataB123456789"
我见过使用||的例子和函数来连接值。这很好,但我想把第三列作为PRIMARY KEY,以避免重复,并创建一个真正唯一的id,我可以查询而无需太多计算,并且我可以用作其他表的外键约束。
我认为复合类型是我正在寻找的,但不是每次都手动设置值,我想通过仅设置" source"来自动获取它们。和" id"
我对postgresql很新,所以欢迎任何帮助。 谢谢。
答案 0 :(得分:1)
您可以在表格中使用复合键:
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;