我正在重复使用SSQL数据库中PostgreSQL模式的部分内容。
这是我的SQL语句的片段:
CREATE TABLE pac_region
(id INTEGER NOT NULL PRIMARY KEY,
country_id INTEGER REFERENCES Country(id) ON UPDATE CASCADE ON DELETE NO ACTION,
name VARCHAR(256) NOT NULL
);
CREATE UNIQUE INDEX idxu_pac_region_name ON pac_region(country_id, name(32));
我想指定只有名称的前32个字符需要是唯一的(当与country_id结合使用时)。
(32)
规范的SSMS barfs。在TSQL中限制复合索引中使用的文本长度的正确方法是什么?
答案 0 :(得分:2)
我认为您不能在列上创建部分索引,就像您正在尝试的那样。
相反,您可以创建persisted computed column
并在该列上添加索引,如
取自Create Index on partial CHAR Column
alter table pac_region
add Computed_Name as cast(name as varchar(32)) persisted;
CREATE UNIQUE INDEX idxu_pac_region_name
ON pac_region(country_id, Computed_Name);
(OR)
可能通过创建索引视图。