我正在使用psql,想要更改我的表中的某一列。
此时,该列是Table 2的外键,但我希望将其指向Table 3。
请问这是否可行,还是应该删除该列并添加一个新的列?
请问这是否可行,还是应该删除该列并添加一个新的列?
不需要添加或删除列。您可以将约束从一个表中删除/禁用并将其添加到另一个表中。
执行前者的命令是:
alter table Table1 drop constraint if exists name_of_constraint_on_Table_1_column
alter table Table1
add constraint name_of_constraint_on_Table_1_column
foreign key (column) references Table3 (other_column) match full
如果你没有显式命名外键约束,则需要找到它的名称。你可以通过 \d
命令来实现:
\d Table1
您应该了解alter table
,因为有很多可以更改表格的内容。
match full
?为什么不使用deferrable initially deferred
呢? - Hassan Baig