向列添加约束它需要首先存在于表中,而Postgresql中没有可使用的命令,该命令将添加列并同时添加约束。它必须是两个单独的命令。您可以使用以下命令进行操作:
首先这样做:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
我用 integer
在这里类型,但应该与id
列的类型相同auth_user
表。
然后添加约束
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
的 ADD CONSTRAINT fk_someName
命令一部分是命名您的约束,因此,如果您以后需要使用一些创建模型的工具来对其进行文档化,您将拥有一个已命名的约束而不是一个随机名称。
它也可用于管理员目的,因此DBA知道约束来自该表。
通常,我们在命名时会给出一些提示,提示它来自何处,以及它在您的案例中所引用的位置 fk_links_chatpicmessage_auth_user
,看到此名称的任何人都将确切知道此约束是什么,而无需在INFORMATION_SCHEMA上进行复杂的查询来查找。
编辑
正如@btubbs的答案所提到的,您实际上可以在一个命令中添加具有约束的列。像这样:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);