要向列添加约束,它需要首先存在于表中,PostgreSQL中没有可以同时添加列和约束的命令.它必须是两个单独的命令.您可以使用以下命令执行此操作:
首先要做的是:
ALTER TABLE links_chatpicmessage ADD COLUMN sender INTEGER;
我在这里使用integer
作为类型,但它应该与auth_user
表中id
列的类型相同.
然后添加约束条件
ALTER TABLE links_chatpicmessage
ADD CONSTRAINT fk_someName
FOREIGN KEY (sender)
REFERENCES auth_user(column_referenced_name);
该命令的第ADD CONSTRAINT fk_someName
部分是naming您的约束,因此如果您以后需要使用某个创建模型的工具来记录它,您将拥有一个命名的约束,而不是随机的名称.
此外,它还用于管理员目的,以便DBA知道该约束来自该表.
通常,我们使用一些关于它的来源到引用位置的提示来命名它,在您的 case 中,它应该是fk_links_chatpicmessage_auth_user
,这样任何看到这个名称的人都会确切地知道这个约束是什么,而不需要对INFORMATION_SCHEMA进行复杂的查询来找出答案.
EDIT个
正如@btubbs的回答所提到的,实际上可以在一个命令中添加带有约束的列.就像这样:
alter table links_chatpicmessage
add column sender integer,
add constraint fk_test
foreign key (sender)
references auth_user (id);