尝试为现有的Postgres表添加一个数组列

31

为什么这个命令不起作用?

ALTER TABLE candidate ADD COLUMN blocked_companies ARRAY;

什么是错误信息? - user330315
语法错误,位置在"ARRAY"附近。 - Suraj Kapoor
1
我希望人们能够解释为什么一个问题会被扣分。这将有助于未来的参与。 - Suraj Kapoor
1个回答

51

您需要指定数据类型。如果您想要一个字符串数组,请使用text:

ALTER TABLE candidate ADD COLUMN blocked_companies text[];

如果你想要一个数字数组,请使用int类型:

ALTER TABLE candidate ADD COLUMN blocked_companies int[];

详细信息可以在手册中找到:
http://www.postgresql.org/docs/current/static/arrays.html#ARRAYS-DECLARATION

但在大多数情况下,尽管Postgres支持数组,但使用数组并不是一个好主意。一个正确规范化的模型可能更适合您的需求。


非常感谢,我会试一下。为什么使用数组不是一个好主意? - Suraj Kapoor
2
@SurajKapoor:因为在单个列中有多个值会违反规范化原则。 - user330315

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接