Страница 1 из 1

Как запретить дублирование значений без учета регистра?

Добавлено: 07 сен 2008, 10:51
frostyland
День добрый.
Можно ли запретить вставку дублирующихся значений в поле без учета регистра (значение = ЗНАЧЕНИЕ = зНачение и т.д.) средствами самой БД?
А если нет, какая техника обычно используется?
Сделал уникальный индекс на поле, база создана с WIN1251, но все равно дублирование разрешается :(

Поиск по форуму у меня почему-то не работает, кстати. Вообще ничего не ищет, даже явно существующие вхождения...

Re: Как запретить дублирование значений без учета регистра?

Добавлено: 07 сен 2008, 11:24
Attid
уникальный индекс на UPPER(name) ?

Re: Как запретить дублирование значений без учета регистра?

Добавлено: 07 сен 2008, 11:56
frostyland
Attid писал(а):уникальный индекс на UPPER(name) ?
Эээ... синтаксис плззз :)

Попробовал по-всякому
CREATE UNIQUE INDEX "CSTUSER_Index01" ON UPPER (CSTUSER ("Field02"));
CREATE UNIQUE INDEX "CSTUSER_Index01" ON UPPER (CSTUSER) ("Field02"));
CREATE UNIQUE INDEX "CSTUSER_Index01" ON CSTUSER (UPPER ("Field02"));

Re: Как запретить дублирование значений без учета регистра?

Добавлено: 07 сен 2008, 14:03
Slavik
Читаем релизноты и doc\sql.extensions\README.expression_indices.txt.
Не забываем указывать версию сервера.
Ещё один вариант -- дополнительное поле, заполняемое в триггере:

Код: Выделить всё

NEW.NAME_UPPER = UPPER(NEW.NAME);
а на него уже уникальный индекс.

Re: Как запретить дублирование значений без учета регистра?

Добавлено: 07 сен 2008, 16:20
kdv
Попробовал по-всякому
в дополнение - перестаньте использовать двойные кавычки в именах объектов, пока не поздно.

http://www.ibase.ru/ibfaq.htm#dtproblem