Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Как в Interbase поле Unique заставить принимать NULL  [new]
Timur
Guest
Из описания IB и из моего опыта следует, что поля объявленные как NOT NULL Unique не могут принимать значения Null. Правильно?
А мне нужны такие поля!!! Чтоб было как в Access и SQL Server.
Как обойти эту проблему? Создавать триггеры?
Или все - таки я ошибаюсь?
30 ноя 01, 16:38    [17644]     Ответить | Цитировать Сообщить модератору
 RE:Как в Interbase поле Unique заставить принимать NULL  [new]
Garya
Guest
Ничччего не понял... Нафига объявлять поле Not null, если нужно чтобы поле принимало Null? Так объявляй его NULL, и все!
Поля с констрейнтом unique принимают Null только один раз (все последующие Null будут восприниматься как повторяющиеся значения, нарушающие условие ограничения).
Если тебя не устраивает, как работает констрейнт, воспользуйся триггером. В нем можно наворотить хоть черта лысого.
3 дек 01, 16:15    [17645]     Ответить | Цитировать Сообщить модератору
 RE:Как в Interbase поле Unique заставить принимать NULL  [new]
rmax
Guest
2Garya

А что, в триггере можно заставить поле not null принимать значение null? И будет ли это фичей а не багом?
4 дек 01, 03:31    [17646]     Ответить | Цитировать Сообщить модератору
 RE:Как в Interbase поле Unique заставить принимать NULL  [new]
GreenSunrise
Member

Откуда:
Сообщений: 12310
2 rmax: отвечу за Garya. Разумеется, нет. Он имел в виду, что если стандартных механизмов поддержания целостности не хватает, то можно реализовать более сложные условия в триггерах. Но поле not null принять значение null не выйдет нигде .
4 дек 01, 06:43    [17647]     Ответить | Цитировать Сообщить модератору
 RE:Как в Interbase поле Unique заставить принимать NULL  [new]
rmax
Guest
что впрочем вполне логично
4 дек 01, 07:48    [17648]     Ответить | Цитировать Сообщить модератору
 RE:Как в Interbase поле Unique заставить принимать NULL  [new]
Timur
Guest
Понял, что вопрос поставлен мной некорректно.
В InterBase объявление UNIQUE применяется только с приставкой NOT NULL. Без него IB выдаст ошибку и требование объявить поле как NOT NULL.
Например, правильным будет
create table names(name char(30) NOT NULL UNIQUE);
и ошибкой create table names(name char(30) UNIQUE);
Это в Access, SQL Server объявление поля как UNIQUE позволяет заполнять его NULL-значениями, а в IB - нет.
Вот я и спрашиваю: как в IB реализовать столь нужную мне функциональность - позволить вводить в поле NULL-значения, а отличные от NULL-значений величины были бы гарантировано уникальными.
4 дек 01, 11:13    [17649]     Ответить | Цитировать Сообщить модератору
 RE:Как в Interbase поле Unique заставить принимать NULL  [new]
Timur
Guest
Ответ мной получен на соседнем форуме (IB) .
Проблему можно решить только через триггер.
Спасибо всем.
4 дек 01, 11:28    [17650]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить