How do I use ALTER TABLE
to add a new column and make it unique?
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)
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:
- Add column
- Fill values
- Add unique constraint
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`;
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>
来源:https://stackoverflow.com/questions/3734891/how-to-use-alter-table-to-add-a-new-column-and-make-it-unique