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

Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - 64bit Production
...
Рейтинг: 0 / 0
частичные ограничения
    #39287063
case
...
Рейтинг: 0 / 0
частичные ограничения
    #39287073
А также
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
decode
...
Рейтинг: 0 / 0
частичные ограничения
    #39287083
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
decode еще нагромоздить надо на два поля, достаточно пары or, если поля not null.
...
Рейтинг: 0 / 0
частичные ограничения
    #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
частичные ограничения
    #39287216
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем спасибо. всё работает
...
Рейтинг: 0 / 0
частичные ограничения
    #39287218
.NET
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrey_anonymous,
отдельное спасибо за пример
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / частичные ограничения
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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