Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / частичные ограничения / 7 сообщений из 7, страница 1 из 1
05.08.2016, 12:34:00
    #39287060
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
частичные ограничения
Есть ли возможность создавать частичные ограничения.
Ограничивать значение только для тех строк, которые удовлетворяют определённому условию.
Например: если ID=1 и CURRENCY_ID=2 тогда PERCENT должен быть равен 0.

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
...
Рейтинг: 0 / 0
05.08.2016, 12:35:39
    #39287063
частичные ограничения
case
...
Рейтинг: 0 / 0
05.08.2016, 12:41:08
    #39287073
А также
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
частичные ограничения
decode
...
Рейтинг: 0 / 0
05.08.2016, 12:47:51
    #39287083
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
частичные ограничения
decode еще нагромоздить надо на два поля, достаточно пары or, если поля not null.
...
Рейтинг: 0 / 0
05.08.2016, 13:43:24
    #39287164
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
частичные ограничения
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
--если ID=1 и CURRENCY_ID=2 тогда PERCENT должен быть равен 0
create table test21 (id integer, currency_id integer, percent number
, constraint check_pct check ( (id, currency_id) not in ((1,2)) or nvl(percent,-1) = 0)
)
create table succeeded.

insert into test21 values(1,2,0)
1 rows inserted

insert into test21 values(10,0,1)
1 rows inserted

insert into test21 values(null,2,3)

1 rows inserted

insert into test21 values(1,2,1)

Error starting at line 9 in command:
insert into test21 values(1,2,1)
Error report:
SQL Error: ORA-02290: check constraint (TEST.CHECK_PCT) violated
02290. 00000 -  "check constraint (%s.%s) violated"
*Cause:    The values being inserted do not satisfy the named check
           
*Action:   do not insert values that violate the constraint.

insert into test21 values(1,2,null)

Error starting at line 11 in command:
insert into test21 values(1,2,null)
Error report:
SQL Error: ORA-02290: check constraint (TEST.CHECK_PCT) violated
02290. 00000 -  "check constraint (%s.%s) violated"
*Cause:    The values being inserted do not satisfy the named check
           
*Action:   do not insert values that violate the constraint.
...
Рейтинг: 0 / 0
05.08.2016, 14:18:45
    #39287216
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
частичные ограничения
всем спасибо. всё работает
...
Рейтинг: 0 / 0
05.08.2016, 14:19:31
    #39287218
.NET
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
частичные ограничения
andrey_anonymous,
отдельное спасибо за пример
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / частичные ограничения / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]