如何将 UNIQUE 列添加到 SQL 服务器数据库中的 table?

How can add UNIQUE column to a table in a SQL Server database?

我的 table 中需要 UNIQUE 列。

我的table:

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

我得到一个错误:

Column 'name' in table 'my_table' is of a type that is invalid for use as a key column in an index. Could not create constraint or index. See previous errors.

那么,如何在 table 中添加 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