如何在sybase中添加唯一列?

时间:2011-08-28 18:52:15

标签: sql sybase

我有一个sybase db表,我需要在其中添加一个新列。

条件:列不得允许空值并且是唯一的。 什么是alter table sql来实现这个目标?

编辑: 它是一个varchar类型的列。是的,现在的表是空的,但是当填充时,确保填充唯一值。

我累了执行

alter table Test add Name varchar not null unique

我收到错误,说明必须指定默认值为非null。 但我想添加唯一约束,所以我真的需要指定默认值吗?

感谢

2 个答案:

答案 0 :(得分:3)

唯一值被指定为列的索引的一部分,而不是列定义本身。

尝试:

alter table Test add Name varchar not null
create unique index index_name_unique on Test (Name)

ASE reference manual可以提供更多详细信息。

答案 1 :(得分:2)

创建表后,除非为列指定了缺省值,否则Sybase ASE不允许直接添加NOT NULL列。但是,如果表仍为空,则可以执行以下操作 -

  1. 首先使用alter table command -
  2. 将新列作为NULL列添加到表中

    alter table测试添加名称varchar(100)null

    1. 完成此操作后,尝试使用alter table script -
    2. 修改表Test中的相同列Name

      alter table测试修改名称varchar(100)NOT NULL

      您将看到使用这些步骤可以将Name列修改为NOT NULL列。这是因为此时Sybase服务器检查表中没有数据,因此不检查NOT NULL约束,并使列为NOT NULL。因此,我们可以跳过默认约束。

      如果测试表中已经存在一些数据,那么我们需要在步骤1和步骤2之间再添加一个步骤,这将在表格中的现有行中添加默认值。这可以通过先前数据的脚本完成,然后执行步骤2.

      要使列仅允许列的唯一值,您需要使用以下语法添加唯一键约束 -

      alter table测试添加约束UK1唯一(名称)