![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Уникальный индекс для строки [FireBird 1.5]
ChaoX © (2007-08-25 17:23:00)Мне нужно добавить уникальный индекс на строковое поле (varchar(32)) в таблице, причём сделать это так, чтобы регистр символов не влиял ни на что (т.е. строка 'Рыбы' должна быть равна 'рыбы'). При этом я очень не хочу возлагать эту функцию на программу. Сейчас я пытаюсь проэмулировать это триггером на before insert с проверкой с помощью upper, но у меня никак не получается :(
Мастера, выручайте!
atruhin (2007-08-26 08:24:00) [1]См. http://www.ibase.ru/devinfo/ibrusfaq.htm
Anatoly Podgoretsky (2007-08-25 21:44:00) [2]> Desdechado (25.08.2007 20:37:05) [5]
Если есть collation и работает, то это хорошо, а то предложения выглядят как поправить правое ухо левой рукой.
Johnmen (2007-08-25 21:31:00) [3]Индексы по вычисляемым полям доступны не раньше 2.0
У автора 1.5
Desdechado (2007-08-25 20:37:00) [4]Есть и вычисляемые, и collation'ы.
Просто я настолько редко ими пользуюсь, что не помню, можно ли по ним построить уникальный индекс.
sniknik (2007-08-25 20:12:00) [5]> которое заполняется триггером сразу в верхнем регистре.
а зачем триггер? разве нет вычисляемых полей в FireBird-е?
типа mssql-ого CREATE TABLE ... (..., Name VarChar(), UpName AS Upper(Name)) по которому после и индекс можно сделать, и искать по нему, хотя это и лишнее (без этого COLLATION можно выбрать такой, что поведение будет подобно желаемому в [0])
точно не скажу, но вроде и вычисляемые и коллатионы в FireBird-е есть.
Desdechado (2007-08-25 19:50:00) [6]Сделать отдельное поле, которое заполняется триггером сразу в верхнем регистре. По нему построить уникальный индекс. Полезно будет и при регистронезависимых сортировках, и при поисках.
А проверять существование в триггере бессмысленно, т.к. он в отличие от индекса работает в контексте транзакции. Т.е. при многопользовательской работе много шансов получения дублей.
Johnmen (2007-08-25 19:05:00) [7]
> но у меня никак не получается :(
Что именно?
Anatoly Podgoretsky (2007-08-25 18:47:00) [8]А оно вообще может это?