0

我创建了一个表: CREATE TABLE myTable ( id int GENERATED ALWAYS AS IDENTITY (START WITH 1, INCREMENT BY 1, NO CACHE)PRIMARY KEY, pcdurl varchar(2000) NOT NULL )

我想让 pcdurl 属性成为一个唯一的约束。

但我得到一个SQL 633 错误。 我猜这是因为大小超过了允许的最大数量。 我的第一个问题是这个数字是多少?

这里它说数字是 255-n,其中 n 是允许空值的列数。

但我也在此页面上阅读:“唯一约束中列的最大组合长度(通过唯一索引支持,以字节为单位)8192”

所以我的第二个问题是如何在将属性保持为唯一键约束的同时克服这个问题?

非常感谢您提前

4

1 回答 1

0

本质上,您将不得不找到一个较小的表示,pdcurl以便您对该表示执行唯一约束。

您可以有一个附加字段,它是 的散列pdcurl,并使该散列值成为唯一字段。根据散列函数,您发生碰撞的可能性很小(可能很小)。但它总是会防止重复。

或者你可能会发现你所有的 url 都以相同的路径开头,所以用.\什么替换那个部分?

于 2012-06-28T09:57:16.803 回答