我必须在表格中实现4个不同列的唯一组合,但是我收到了这个错误:
警告!最大密钥长度为900字节。索引'a1_un'的最大长度为1544字节。对于某些大值组合,插入/更新操作将失败。
我理解错误并知道如何修复它(通过更改列的大小)。但这是消除此错误的最佳方法,并且效果很好。我还读到它仍然是唯一的警告。
ADD CONSTRAINT a1_un UNIQUE([col1],[col2],[col3],[col4]);
col1,col2,col3,col4都是NVARCHAR(256)
答案 0 :(得分:0)
900字节限制肯定看起来像SQL Server。答案是你不能直接这样做。您可以添加一个新列,以减少键的大小并对其实施唯一约束。
alter table t
add combined as (left(col1, 200) + '|' + left(col2, 200) + '|' + left(col3, 200) + '|' + left(col4, 200));
alter table t
add constraint unq_t_combined unique(combined);
与您的逻辑完全相同,但它可能符合您的需求。
另一种方法是在列值的哈希上构建唯一索引。