案例1:
如果您需要在创建新表时创建外键
CREATE TABLE table1(
id SERIAL PRIMARY KEY,
column1 varchar(n) NOT NULL,
table2_id SMALLINT REFERENCES table2(id)
);
上面的命令将创建一个名为“ table1”的表,并命名为“ id”(主键),“ column1”,“ table2_id”(表1的外键引用表2的id列)三列。
DATATYPE'serial'将使使用此数据类型的列作为自动生成的列,当在表中插入值时,您根本不需要提及此列,或者您可以在值位置使用'default'而不带引号。
主键列始终以值'tablename_pkey'添加到表的索引中。
如果在表创建时添加了外键,则使用格式'(present_table_name)_(foreign_key_id_name)_fkey'添加一个CONSTRAINT。
添加外键时,我们必须在列名称旁边输入关键字“ REFERENCES”,因为我们要告诉postgres该列引用了一个表,然后在引用旁边我们必须将该表提供给引用,并在方括号中给出引用表的列名,通常将外键作为主键列。
情况2:
如果您想要外键指向现有列上的现有表
ALTER TABLE table1
ADD CONSTRAINT table1_table2_id_id_fkey
FOREIGN KEY (table2_id) REFERENCES table2(id);
注意:FOREIGN KEY和REFERENCES tabel2之后的方括号'()'是强制性的,否则postgres将抛出错误。