2010-09-17 135 views

回答

8

還要看DBMS,但我認爲以下是相當便攜:

ALTER TABLE table_name ADD column_name datatype 
ALTER TABLE table_name ADD UNIQUE (column_name) 

如果你想給一個名稱UNIQUE約束,你可以取代這個最後的命令:

ALTER TABLE table_name ADD CONSTRAINT constraint_name UNIQUE (column_name) 
+0

例如:'ALTER TABLE payments ADD unit NVARCHAR2(128);' – 2015-07-27 02:19:21

3

如果表是空的

ALTER TABLE ADD (FieldName Type) 
    ALTER TABLE ADD CONSTRAINT UNIQUE(FieldName) 

如果你在表中的數據,你需要爲t他的三個步驟:

  1. 添加列
  2. 填充值
  3. 添加唯一約束
+0

正如@APC指出的那樣,'UNIQUE'允許有多個NULL值,所以如果表中有數據,就不需要三步完成。 – 2010-09-17 13:26:48

+0

@Daniel,oracle是允許這樣做的,sql server不允許(直到你改變設置) – 2010-09-17 13:46:37

1

這是一個兩步過程:添加新coloumn,然後添加約束。由於UNIQUE約束允許空不要緊表是否被填充:

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> 
0

你可以用一個SQL語句(與MySQL至少)做到這一點:

ALTER TABLE `people` ADD COLUMN `personal_code` VARCHAR(50) UNIQUE AFTER `surname`; 
相關問題