Я создал таблицу: CREATE TABLE MyTable ( ID Int генерируемый всегда AS IDENTITY (не НАЧАТЬ С 1, Инкримент 1, NO CACHE) PRIMARY KEY, pcdurl VARCHAR (2000) NOT NULL )Максимальный размер уникального ограничения на DB2 9.7
И я хотел бы сделать атрибут pcdurl уникальным ограничением.
Но я получаю ошибку SQL 633. Я думаю, это потому, что размер превышает максимально допустимое число. Моим первым вопросом было бы то, что это за номер?
Here В нем указано число 255-n, где n - количество столбцов, допускающих нулевые значения.
Но я также читал на этом page: «максимальная общая длина столбцов в UNIQUE ограничение (поддерживается через уникальный индекс в байтах) 8192»
Так что мой второй вопрос будет как можно преодолеть эта проблема, сохраняя атрибут как уникальное ограничение ключа?
Большое спасибо заранее
Большое спасибо за ответ, Демс. Но было бы лучше, если бы я смог найти решение без возможности столкновения. И та же часть URL-адресов имеет длину всего 10 символов. Но знаете ли вы, какой максимальный размер разрешен на 9,7? – BPL
@BPL - Не так легко хэшировать. См. Этот ответ о вероятности столкновения с MD5 * (когда я говорю «крошечный», я действительно имею в виду крошечный) * http://stackoverflow.com/questions/201705/how-many-random-elements-before-md5-produces -collisions – MatBailie
@BPL - И википедия показывает, что с MD5 (128 бит) вам нужно генерировать 26 000 000 000 значений, чтобы иметь шанс 0.0000000000000001%, что любой из них столкнулся с любым из других. * (Что лучше, чем большинство неудачных отказов afaik) * http://en.wikipedia.org/wiki/Birthday_attack – MatBailie