如何将 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.
我认为这主要是因为它们从一开始就没有分配任何特定的数据大小,因此如果超过最大限制,创建的任何索引都必须更改。
我的 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.
我认为这主要是因为它们从一开始就没有分配任何特定的数据大小,因此如果超过最大限制,创建的任何索引都必须更改。