This is essentially the same question as How do I rename a column in a database table using SQL?.
So, I want to rename a column in a table. This column is part of a set of tables that lives inside a PostgreSQL schema, which is itself in a PostgreSQL database.
However, I also have constraints like foreign keys involving this column. It is not clear to me whether this command will also take care of constraints. If not, how should I handle this?
Alternatively, I also have this database available as a dump file. Would it make sense to edit the dump file, and if so, how?
1 Answer 1
You could try it yourself as well, but no: renaming a column won't break your foreign keys.
Try this:
CREATE TABLE a (a_id serial PRIMARY KEY);
CREATE TABLE b (a_id integer REFERENCES a (a_id));
ALTER TABLE a RENAME COLUMN a_id TO id;
and have a look at b
's definition.
Imagine the world if it weren't so: every single column renaming (in my experience happening a lot in the first phases of development) would involve modifying constraints here and there. Wouldn't make much sense, would it?
Doing this in a dump is rather error-prone, I would not do that.
-
Thanks for the confirmation. I did try it, and it seemed to work, but I wasn't sure if this was a reliable procedure in general.Faheem Mitha– Faheem Mitha2013年09月06日 10:23:57 +00:00Commented Sep 6, 2013 at 10:23
-
So, if it doesn't break, what are the fkeys attached to?Qwerty– Qwerty2015年02月11日 14:40:32 +00:00Commented Feb 11, 2015 at 14:40
-
@Qwerty I'm not sure I understand what you are asking. Otherwise, the column that is referencing a column of another table is shown in the
pg_catalog.pg_constraint.conkey
column (the number in that array itself referencingpg_attribute
). No column name is involved in this.András Váczi– András Váczi2015年02月16日 14:32:31 +00:00Commented Feb 16, 2015 at 14:32 -
@dezso I was asking about the unique identifier used to attach the fkeys to, if it doesn't use the name. But I did little research on it already, so I am K. Thanks.Qwerty– Qwerty2015年02月16日 14:59:46 +00:00Commented Feb 16, 2015 at 14:59