oracle中列的unique是通过constraint(约束)来完成,所以要取消某个列的unique,就应该把相对应的constraint drop 掉。通常在建表的时候,用户只是指定某个列unique而省略了constraint的名字,所以oracle会自动给这个constraint命名。-- 建立测试表,col1为unique
SQL> CREATE TABLE tbl_test(col1 VARCHAR2(10) UNIQUE);
Table created.-- 查找数据字典,找到oracle给该unique列所建constraint的命名
SQL> SELECT x.constraint_name, y.column_name
  2    FROM user_constraints x, user_cons_columns y
  3   WHERE x.owner = y.owner
  4     AND x.table_name = y.table_name
  5     AND x.constraint_name = y.constraint_name
  6     AND x.table_name = 'TBL_TEST'
  7     AND constraint_type = 'U';
CONSTRAINT_NAME
------------------------------
COLUMN_NAME
--------------------------------------------------------------------------------
SYS_C0081522
COL1-- 根据查到的constraint 名,drop掉该constaint就可以
SQL> ALTER TABLE tbl_test DROP CONSTRAINT SYS_C0081522;
Table altered.