【问题标题】:How to use ALTER TABLE to add a new column and make it unique?如何使用 ALTER TABLE 添加新列并使其唯一?
【发布时间】:2010-09-17 11:30:42
【问题描述】:

如何使用ALTER TABLE 添加新列并使其独一无二?

【问题讨论】:

  • 什么数据库服务器?请提供更多信息。

标签: sql unique alter-table


【解决方案1】:

取决于 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)

【讨论】:

  • 例如:ALTER TABLE payments ADD unit NVARCHAR2(128);
【解决方案2】:

如果表是空的

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

如果表中有数据,则需要分三步完成:

  1. 添加列
  2. 填充值
  3. 添加唯一约束

【讨论】:

  • 正如@APC 所说,UNIQUE 允许多个NULL 值,因此如果表中有数据,则无需分三步进行。
  • @Daniel,oracle 允许这样做,sql server 不允许(直到您更改设置)
【解决方案3】:

您可以使用一条 SQL 语句来完成(至少使用 MySQL):

ALTER TABLE `people` ADD COLUMN `personal_code` VARCHAR(50) UNIQUE AFTER `surname`;

【讨论】:

    【解决方案4】:

    这是一个两步过程:添加新列,然后添加约束。因为 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-25
      • 2019-01-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-19
      • 1970-01-01
      • 2019-08-19
      相关资源
      最近更新 更多