Помогите с проверкой Check Constraint

Владимирыч
Дата: 14.11.2008 08:15:07
Нужна помощь.

Есть таблица 3 поля
id number
status number
field number


Нужно чтобы только одна запись имела status = 1, т.е. необходимо недопустить чтобы несколько записей имели status = 1
Как сделать ограничение через check?
Добрый Э - Эх
Дата: 14.11.2008 08:23:39
создай уникальный функциональный индекс, и не парься...
create 
  unique index x_indx on 
    <table_name> (
                   case 
                     when status = 1 then status 
                     else null 
                   end
                 )
Elic
Дата: 14.11.2008 08:28:01
Владимирыч
Нужно чтобы только одна запись имела status = 1, т.е. необходимо недопустить чтобы несколько записей имели status = 1
Как сделать ограничение через check?
Только если у статуса нет других значений, кроме 1 и null :)

create unique index ... on ... (decode(status, 1, 0));
Владимирыч
Дата: 14.11.2008 08:33:38
Elic
Только если у статуса нет других значений, кроме 1 и null :)

Да, у статуса только 1 и 0
Добрый Э - Эх
Дата: 14.11.2008 08:36:33
Владимирыч
Elic
Только если у статуса нет других значений, кроме 1 и null :)

Да, у статуса только 1 и 0
Тебе уже показали, как надо делать. Еще можно CASE/DECODE заменить на NULLIF(status,0). Но суть одна - создание уникального FBI. А какую функцию/выражение ты во внутрь его засунешь - дело третье
Владимирыч
Дата: 14.11.2008 08:41:43
Добрый Э - Эх
Тебе уже показали, как надо делать

И я это понял.:)
Спасибо мужики.
Elic
Дата: 14.11.2008 08:55:54
Владимирыч
Elic
Только если у статуса нет других значений, кроме 1 и null :)
Да, у статуса только 1 и 0
Ну не хотят люди дружить с логикой