Reputation: 4971
How do I use ALTER TABLE
to add a new column and make it unique?
Upvotes: 18
Views: 39789
Reputation: 3236
You can do it with a single SQL statement (at least with MySQL):
ALTER TABLE `people` ADD COLUMN `personal_code` VARCHAR(50) UNIQUE AFTER `surname`;
Upvotes: 2
Reputation: 146239
It is a two step process: add the new coloumn, then add the constraint. Because UNIQUE constraints permit nulls it doesn't matter whether the table is populated:
SQL> select count(*) from t23
2 /
COUNT(*)
----------
2
SQL> alter table t23
2 add new_col number
3 /
Table altered.
SQL> alter table t23
2 add constraint t23_uk unique (new_col)
3 /
Table altered.
SQL>
Upvotes: 1
Reputation: 25370
if table is empty
ALTER TABLE ADD (FieldName Type)
ALTER TABLE ADD CONSTRAINT UNIQUE(FieldName)
If you have data in table you need to this in three steps:
Upvotes: 5
Reputation: 344311
Depends on the DBMS, but I think the following is quite portable:
ALTER TABLE table_name ADD column_name datatype
ALTER TABLE table_name ADD UNIQUE (column_name)
If you want to give a name to the UNIQUE
constraint, you could replace the last command with this:
ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name)
Upvotes: 30