如何向SQL Server数据库中的表添加UNIQUE列



我需要UNIQUE列在我的表

我的表:

CREATE TABLE my_table
(
      id int IDENTITY PRIMARY KEY,
      name text NOT NULL UNIQUE,
      blabla text NOT NULL
);

,我得到一个错误:

表'my_table'中的列'name'的类型是无效的用作索引中的键列。无法创建约束或索引。见前面的错误。

那么,如何在表中添加UNIQUE列呢?

您应该使用VARCHAR/NVARCHAR而不是TEXT,因为TEXT数据类型已被弃用-参见https://msdn.microsoft.com/en-us/library/ms187993.aspx

CREATE TABLE my_table
(
      id int IDENTITY PRIMARY KEY,
      name VARCHAR(100) NOT NULL CONSTRAINT UQ_my_table_name UNIQUE,
      blabla VARCHAR(100) NOT NULL
);

另外,考虑给约束命名,而不是让它有一个默认的名称。

所以问题在于您为列名指定的数据类型。本质上,"text"是一种大对象(LOB)数据类型。SQL不允许在这种特定数据类型上创建索引。这种数据类型的其他示例包括varchar(max)、nvarchar(max)、varbinary(max)、xml和image。

我认为这很大程度上是因为这些索引从一开始就没有分配任何特定的数据大小,因此如果超过了最大限制,创建的任何索引都必须更改。

https://msdn.microsoft.com/en-us/library/ms188783.aspx

最新更新