powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ограничение
15 сообщений из 15, страница 1 из 1
Ограничение
    #37921187
Мутирую
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Комрады,
как реализовать следующие ограничение?

таблица из двух полей.

Поле2 не может быть null, если в таблице есть хотя бы одна запись с таким же полем1 и полем2 не-null.
...
Рейтинг: 0 / 0
Ограничение
    #37921192
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МутируюКомрады,
как реализовать следующие ограничение?

таблица из двух полей.

Поле2 не может быть null, если в таблице есть хотя бы одна запись с таким же полем1 и полем2 не-null.
матвью на коммит. однако, ничего хорошего в этом нет.
перепроектируйте таблицу вашу на две.
...
Рейтинг: 0 / 0
Ограничение
    #37921201
Мутирую
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я Вас понял. Спасибо за вариант, но , к сожалению, меня на "это" не подпустят.
Может есть какой то вариант с тригерами, чек-констрейнтами, пакетами ?
...
Рейтинг: 0 / 0
Ограничение
    #37921211
Мутирую
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хотя , если разбить на две таблицы, насколько я понимаю, результат будет тот же.
Повесив триггер на update второй таблицы, подсчет будет вестись внутри этого триггера. Мутируем.
...
Рейтинг: 0 / 0
Ограничение
    #37921213
Фотография orawish
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МутируюЯ Вас понял. Спасибо за вариант, но , к сожалению, меня на "это" не подпустят.
Может есть какой то вариант с тригерами, чек-констрейнтами, пакетами ?
на триггеры забейте.
с констрейнтами - в принципе реализуемо (но, что вижу = тоже через матвью и ссылки на них)
пакеты - конечно, да. но тоже фиговато, ибо тут придётся бутылочное горло изваять
...
Рейтинг: 0 / 0
Ограничение
    #37921256
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МутируюПоле2 не может быть null, если в таблице есть хотя бы одна запись с таким же полем1 и полем2 не-null.поле2 NOT NULL.
...
Рейтинг: 0 / 0
Ограничение
    #37921275
Мутирую
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-МутируюПоле2 не может быть null, если в таблице есть хотя бы одна запись с таким же полем1 и полем2 не-null.поле2 NOT NULL.

Не пройдет.
Ситуация: если не существует записей с аналогичным полем1, значение null в поле2 допускается.
...
Рейтинг: 0 / 0
Ограничение
    #37921277
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутируюзначение null в поле2 допускается.в начальной постановке этого не было.
...
Рейтинг: 0 / 0
Ограничение
    #37922308
Мутирую
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
-2-Мутируюзначение null в поле2 допускается.в начальной постановке этого не было.

Комрады, мне кажется это решаемо, пока не могу понять как. Хелп!

таблица из двух полей.
Поле2 не может быть null, если в таблице есть хотя бы одна запись с таким же полем1 и полем2 не-null.
Если не существует записей с аналогичным полем1, значение null в поле2 допускается.
...
Рейтинг: 0 / 0
Ограничение
    #37922315
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутирую,

а как быть, когда в (поле1-поле2) вставили (1-null), а просле этого захотели вставить (1-1)?
...
Рейтинг: 0 / 0
Ограничение
    #37922320
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
orawishМутируюЯ Вас понял. Спасибо за вариант, но , к сожалению, меня на "это" не подпустят.
Может есть какой то вариант с тригерами, чек-констрейнтами, пакетами ?
на триггеры забейте.
с констрейнтами - в принципе реализуемо (но, что вижу = тоже через матвью и ссылки на них)
пакеты - конечно, да. но тоже фиговато, ибо тут придётся бутылочное горло изваятьможно через афтер-стейтмент-триггеры и доп. таблицу с уникальным полем-1 - чтобы блокировать в ней строку
плюс коллекция или времянка
...
Рейтинг: 0 / 0
Ограничение
    #37922478
ten
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мутирую,
При условиях: Поле1 is not null + для каждого значения Поле1 допускается не более одной записи с Поле2 is null можно попробовать FBI.
Код: 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.
38.
39.
40.
SQL> create table test_fbi (x number not null, y number);

Таблица создана.

SQL> create unique index test_fbi_uk on test_fbi (decode(y, null, x, null), decode(y, null, 1, null)

Индекс создан.

SQL> 
SQL> insert into test_fbi select 1, null from dual;

1 строка создана.

SQL> insert into test_fbi select 1, 2 from dual;

1 строка создана.

SQL> insert into test_fbi select 1, 2 from dual;

1 строка создана.

SQL> insert into test_fbi select 2, null from dual;

1 строка создана.

SQL> insert into test_fbi select 2, null from dual;
insert into test_fbi select 2, null from dual
*
ошибка в строке 1:
ORA-00001: нарушено ограничение уникальности (TEST.TEST_FBI_UK)


SQL> select * from test_fbi;

         X          Y
---------- ----------
         1
         1          2
         1          2
         2

...
Рейтинг: 0 / 0
Ограничение
    #37922484
andreymx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tenМутирую,
При условиях: Поле1 is not null + для каждого значения Поле1 допускается не более одной записи с Поле2 is null можно была у нас аналогичная постановка
таблица условной структуры (статья, строка)
общий смысл - по конкретной статье строки или всегда вводятся, или никогда не вводятся
так что в моем случае твой вариант явно не прокатил бы
...
Рейтинг: 0 / 0
Ограничение
    #37922547
stax..
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
МутируюКомрады,
как реализовать следующие ограничение?

таблица из двух полей.

Поле2 не может быть null, если в таблице есть хотя бы одна запись с таким же полем1 и полем2 не-null.
такое допускается?
1 null
1 null
1 null

.....
stax
...
Рейтинг: 0 / 0
Ограничение
    #37922687
Мутирую
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreymxМутирую,

а как быть, когда в (поле1-поле2) вставили (1-null), а просле этого захотели вставить (1-1)?

Запретить вставлять!

stax..такое допускается?

1 null
1 null
1 null
.....
stax

Это ограничено constraint TABLE_UK1 unique (Поле1, Поле2)

tenМутирую,
При условиях: Поле1 is not null + для каждого значения Поле1 допускается не более одной записи с Поле2 is null можно попробовать FBI.


Спасибо, сейчас попробую.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Ограничение
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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