Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
ВнизУникальность Case Insensitive Найти похожие ветки
← →
kaif © (2004-04-11 16:21) [0]Иногда бывает нужно в БД иметь уникальный индекс, который не различал бы регистр букв. Как это лучше всего организовать?
← →
kaif © (2004-04-11 16:21) [0]Иногда бывает нужно в БД иметь уникальный индекс, который не различал бы регистр букв. Как это лучше всего организовать?
← →
Jack128 © (2004-04-11 16:31) [1]добавь поле, заполняемое на тригерах и строй по нему индекс..Или еще вариант перейти на Yaffil, там индексы по udf есть..
← →
Jack128 © (2004-04-11 16:31) [1]добавь поле, заполняемое на тригерах и строй по нему индекс..Или еще вариант перейти на Yaffil, там индексы по udf есть..
← →
kaif © (2004-04-11 16:57) [2]2 Jack128 © (11.04.04 16:31) [1]
Я использую Yaffil выше версии 877 или Firebird выше 1.5 RC4. В принципе, я видимо могу попробовать воспользоваться вторым советом (еще не экспериментировал с такими индексами). Жаль, однако, что исходный стандарт не предусматривает такую вещь, хотя предусматривает наличие встроенной функции upper. Я стараюсь все время придерживаться минимализма в синтаксисе, чтобы совместимость с IB6.5 была и другими потенциально возможными серверами...
← →
kaif © (2004-04-11 16:57) [2]2 Jack128 © (11.04.04 16:31) [1]
Я использую Yaffil выше версии 877 или Firebird выше 1.5 RC4. В принципе, я видимо могу попробовать воспользоваться вторым советом (еще не экспериментировал с такими индексами). Жаль, однако, что исходный стандарт не предусматривает такую вещь, хотя предусматривает наличие встроенной функции upper. Я стараюсь все время придерживаться минимализма в синтаксисе, чтобы совместимость с IB6.5 была и другими потенциально возможными серверами...
← →
Jack128 © (2004-04-11 17:12) [3]
> [2] kaif © (11.04.04 16:57)
ну первый способ гарантирует совместимость..Хотя, конечно, кривоват..
← →
Jack128 © (2004-04-11 17:12) [3]
> [2] kaif © (11.04.04 16:57)
ну первый способ гарантирует совместимость..Хотя, конечно, кривоват..
← →
kaif © (2004-04-11 17:46) [4]Интересно...а индекс по вычисляемым полям возможен? Тогда можно было бы создать вычисляемое поле COMPUTED BY, а по нему - индекс. Какая идея!!! Сейчас посмотрю в документации. Наверняка меня обломают какой-нибудь фразой типа: calculated columns cannot be used in the index....
← →
kaif © (2004-04-11 17:46) [4]Интересно...а индекс по вычисляемым полям возможен? Тогда можно было бы создать вычисляемое поле COMPUTED BY, а по нему - индекс. Какая идея!!! Сейчас посмотрю в документации. Наверняка меня обломают какой-нибудь фразой типа: calculated columns cannot be used in the index....
← →
Jack128 © (2004-04-11 17:57) [5]даже теоритически недадут создать такой index.
Дапустим я создам поле
alter table ...
ADD TEST COMPUTED BY (cast("now" as timestamp))
И как по этому полю индекс делать... Кстати как эта проблема в яфиле решается, я не знаю..
← →
Jack128 © (2004-04-11 17:57) [5]даже теоритически недадут создать такой index.
Дапустим я создам поле
alter table ...
ADD TEST COMPUTED BY (cast("now" as timestamp))
И как по этому полю индекс делать... Кстати как эта проблема в яфиле решается, я не знаю..
← →
kaif © (2004-04-11 18:01) [6]Пока чисто эмпирически...
создаю поле
alter table city add aaa varchar(35) computed by (upper(name));
select * from city;
шикарная колонка!
alter table city add constraint x_aaa unique (aaa);
unseccesful metadata update
attempt to index COMPUTED BY column in INDEX RDB$3
Блин!
А теперь читаем документацию (Language Reference-CREATE INDEX)
You cannot index Blob columns or arrays.
A UNIQUE index cannot be created on a column or set of columns that already contains
duplicate or NULL values.
И где тут речь о COMPUTED BY ?
← →
kaif © (2004-04-11 18:01) [6]Пока чисто эмпирически...
создаю поле
alter table city add aaa varchar(35) computed by (upper(name));
select * from city;
шикарная колонка!
alter table city add constraint x_aaa unique (aaa);
unseccesful metadata update
attempt to index COMPUTED BY column in INDEX RDB$3
Блин!
А теперь читаем документацию (Language Reference-CREATE INDEX)
You cannot index Blob columns or arrays.
A UNIQUE index cannot be created on a column or set of columns that already contains
duplicate or NULL values.
И где тут речь о COMPUTED BY ?
← →
kaif © (2004-04-11 18:05) [7]2 Jack128 © (11.04.04 17:57) [5]
Видно надо будет поэкспериментировать со вторым способом. Но это я сделаю позже и более систематически.
А пока что облом с вычисляемым полем... Такое ощущение, что стандарт SQL делали не совсем для людей... Или в те времена в базах данных IBM использовались только большие буквы :)
← →
kaif © (2004-04-11 18:05) [7]2 Jack128 © (11.04.04 17:57) [5]
Видно надо будет поэкспериментировать со вторым способом. Но это я сделаю позже и более систематически.
А пока что облом с вычисляемым полем... Такое ощущение, что стандарт SQL делали не совсем для людей... Или в те времена в базах данных IBM использовались только большие буквы :)
← →
kaif © (2004-04-11 23:27) [8]Попробовал в Yaffil 877. Отлично сработало:
create unique index x_aaa on city computed by (upper(name))
И четко не допустило дубликата.
Однако попытка создать констрейнт не прошла:alter table city add constraint x_bbb unique computed by (upper(name))
-не понял слово computed.
Но это не так обязательно (именовать такие констрейнты), так как возможность именования индекса вполне достаточна для того, чтобы потом его при желании удалить.
Еще попробую потом под
Firebird 1.5 RC4
← →
kaif © (2004-04-11 23:27) [8]Попробовал в Yaffil 877. Отлично сработало:
create unique index x_aaa on city computed by (upper(name))
И четко не допустило дубликата.
Однако попытка создать констрейнт не прошла:alter table city add constraint x_bbb unique computed by (upper(name))
-не понял слово computed.
Но это не так обязательно (именовать такие констрейнты), так как возможность именования индекса вполне достаточна для того, чтобы потом его при желании удалить.
Еще попробую потом под
Firebird 1.5 RC4
← →
Jack128 © (2004-04-11 23:35) [9]Что ж..Ждем слияния кода Yaffil"a и FB...
← →
Jack128 © (2004-04-11 23:35) [9]Что ж..Ждем слияния кода Yaffil"a и FB...
← →
kaif © (2004-04-12 00:16) [10]К сожалению, CREATE UNIQUE INDEX <name> ON <table> COMPUTED BY (<exprssion>)
на Firebird 1.5 RC4 не сработала.
Зато зашел на http://firebird.sourceforge.net/
и вижу Firebird 1.5 Final Release
Постараюсь скачать, но судя по документации, там пока этого нет.
:(
← →
kaif © (2004-04-12 00:16) [10]К сожалению, CREATE UNIQUE INDEX <name> ON <table> COMPUTED BY (<exprssion>)
на Firebird 1.5 RC4 не сработала.
Зато зашел на http://firebird.sourceforge.net/
и вижу Firebird 1.5 Final Release
Постараюсь скачать, но судя по документации, там пока этого нет.
:(
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.11;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.036 c