我有3个表(Users,Links和LinkLists),我想将用户ID及其链接ID存储在数组中。但是,当我尝试下面的代码时,出现以下错误:
不兼容的类型:integer []和integer
有什么方法可以在表中存储user_id和一组链接ID?
CREATE TABLE Users (
id serial primary key not null,
email varchar(64) unique not null,
);
CREATE TABLE Links (
id serial primary key not null,
name varchar(64) not null
);
CREATE TABLE LinkLists(
user_id integer unique not null REFERENCES Users(id),
links integer [] REFERENCES Links(id) -- problem here --
);
示例:
用户表*
1 example@gmail.com
链接表
1 google.com
2 twitter.com
链接列表表
1 [1,2]
答案 0 :(得分:2)
可能您在LinkList表上不需要数组数据类型。
您只需要两个外键。
CREATE TABLE LinkLists(
user_id integer unique not null REFERENCES Users(id),
links integer not null REFERENCES Links(id)
);
据我说,您不需要第三张表:LinkLists
在链接表上定义user_id FK并引用用户。
或者最好的方法,使用树形视图表,包括引用自身
答案 1 :(得分:-1)
实际上您可以做到! 只需在users表中添加一个新的数组类型字段。并为用户表定义一个插入后触发函数。
并通过CTE更新数组字段。
我正在成功使用该方法。