Добро пожаловать, Гость
Логин: Пароль: Запомнить меня
SQL, PL/SQL, T-SQL: запросы, DML DDL операторы, пакеты, процедуры, функции, триггеры и последовательности.
  • Страница:
  • 1
  • 2

ТЕМА:

Активность записи в Oracle 12 года 9 мес. назад #2853

Есть таблица с данными:
create table test (
    test_id number(9)
  , active_flag number(1)
  , constraint ch_test_active_flag
      check (active_flag is null or active_flag = 1)
)
/
insert into test(test_id, active_flag) values (1, null);
insert into test(test_id, active_flag) values (1, null);
insert into test(test_id, active_flag) values (1, 1);
insert into test(test_id, active_flag) values (2, null);
insert into test(test_id, active_flag) values (2, 1);
commit;

Можно ли как-нибудь на уровне БД наложить следующее ограничение: для каждого test_id может быть сколько угодно записей с active_flag is null, но только одна запись с active_flag=1? С возможностью изменять записи в дальнейшем.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Активность записи в Oracle 12 года 9 мес. назад #2854

  • Doc
  • Doc аватар
  • Не в сети
  • Захожу иногда
  • Захожу иногда
  • Сообщений: 41
  • Спасибо получено: 0
Привет!
Может я не понял сути, но:
Чем не подходит юник по этим двум полям?
Ведь null же...
Объясни пожалста

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Активность записи в Oracle 12 года 9 мес. назад #2855

  • Gwen
  • Gwen аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 5
  • Спасибо получено: 0
uniq не подходит по причине "возникания" на дублирование строки типа (1,NULL)...

Pesok, а почему не написать тригер?
если пугает проблема мутирования, то здесь есть несколько решений...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Активность записи в Oracle 12 года 9 мес. назад #2856

  • Doc
  • Doc аватар
  • Не в сети
  • Захожу иногда
  • Захожу иногда
  • Сообщений: 41
  • Спасибо получено: 0
да действительно возникает...
Но мне всегда казалось что поля типа null на юник не реагируют....
Странное довольно-таки явление)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Активность записи в Oracle 12 года 9 мес. назад #2857

  • Myk
  • Myk аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 2
  • Спасибо получено: 0
Привет!
А можно сделать проверку в процедурах (insert_sp,update_sp,...)
и только через них и работать. :)

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Re: Активность записи в Oracle 12 года 9 мес. назад #2858

  • Myk
  • Myk аватар
  • Не в сети
  • Новый участник
  • Новый участник
  • Сообщений: 2
  • Спасибо получено: 0
Добавлюсь...
Они не влияют только если все поля индекса являются NULL'ами или в случае одного поля происходит так как вы сказали...

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Последнее редактирование: от Myk.
  • Страница:
  • 1
  • 2
Время создания страницы: 0.275 секунд