Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 можно ли организовать такой constraint  [new]
Dioman
Member

Откуда:
Сообщений: 53
есть 2 поля нужно чтобы соблюдалась уникальность 1-е поле + (если второе поле == 0 -> использовать для включения в проверку на уникальность)

то есть
поле1 поле2
0 1
0 1
0 1
0 0
1 0

катит, а:

поле1 поле2
0 1
0 1
0 1
0 0
0 0

не должно катить, так как при поле2 = 0 поле1 дублируется

есть ли возможность сделать такой констрйнт средствами оракла.
14 июл 06, 11:47    [2880595]     Ответить | Цитировать Сообщить модератору
 Re: можно ли организовать такой constraint  [new]
dnikiforov
Guest
Что-то вроде этого ?

SQL> create table tab2 (col1 number, col2 number);

Table created.

SQL> create unique index idx_uc on tab2 (case col2 when 0 then col1 else null end);

Index created.

SQL> insert into tab2 values(0,1);

1 row created.

SQL> /

1 row created.

SQL> /

1 row created.

SQL> insert into tab2 values(0,0);

1 row created.

SQL> insert into tab2 values(1,0);

1 row created.

SQL> /
insert into tab2 values(1,0)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.IDX_UC) violated


SQL> insert into tab2 values(1,2);

1 row created.

SQL> /

1 row created.

SQL> insert into tab2 values(0,0);
insert into tab2 values(0,0)
*
ERROR at line 1:
ORA-00001: unique constraint (SCOTT.IDX_UC) violated
14 июл 06, 11:56    [2880675]     Ответить | Цитировать Сообщить модератору
 Re: можно ли организовать такой constraint  [new]
Dioman
Member

Откуда:
Сообщений: 53
отлично спасибо
14 июл 06, 15:01    [2882024]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить