Возможно ли создать уникальный индекс ?

Владимир СА
Дата: 30.09.2015 09:36:32
Возможно ли создать уникальный индекс ?

Проблема:
Есть таблица
CREATE TABLE REGISTER
(
  ID               NUMBER                       NOT NULL,
  TYPE_AZ          NUMBER                       NOT NULL,
  NUM_AZ           NUMBER,
  YEAR_AZ          NUMBER                       NOT NULL,
  ID_ZAGS          NUMBER                       NOT NULL,
  FLAG_CHANGE_REC  NUMBER(1)                    DEFAULT 0                     NOT NULL
)

Хотелось, чтобы в таблицу записывались записи с уникальным
ID,TYPE_AZ,NUM_AZ,YEAR_AZ,ID_ZAGS, для FLAG_CHANGE_REC = 0

Ну, а при других значениях FLAG_CHANGE_REC = 1 уникальность не соблюдалась
????

Или какое-то другое решение посоветуете...
Владимир СА
Дата: 30.09.2015 09:39:46
Владимир СА
Возможно ли создать уникальный индекс ?

Проблема:
Есть таблица
CREATE TABLE REGISTER
(
  ID               NUMBER                       NOT NULL,
  TYPE_AZ          NUMBER                       NOT NULL,
  NUM_AZ           NUMBER,
  YEAR_AZ          NUMBER                       NOT NULL,
  ID_ZAGS          NUMBER                       NOT NULL,
  FLAG_CHANGE_REC  NUMBER(1)                    DEFAULT 0                     NOT NULL
)

Хотелось, чтобы в таблицу записывались записи с уникальным
ID,TYPE_AZ,NUM_AZ,YEAR_AZ,ID_ZAGS, для FLAG_CHANGE_REC = 0

Ну, а при других значениях FLAG_CHANGE_REC = 1 уникальность не соблюдалась
????

Или какое-то другое решение посоветуете...

Ошибочка

Хотелось, чтобы в таблицу записывались записи с уникальным
TYPE_AZ,NUM_AZ,YEAR_AZ,ID_ZAGS, для FLAG_CHANGE_REC = 0
Al_vrn
Дата: 30.09.2015 09:54:41
Может добавить виртуальный столбец DECODE(FLAG_CHANGE_REC, 0, 0, ID) и создать составной уникальный ключ по нему и TYPE_AZ,NUM_AZ,YEAR_AZ,ID_ZAGS ?
Elic
Дата: 30.09.2015 09:58:24
Владимир СА
Хотелось, чтобы в таблицу записывались записи с уникальным
TYPE_AZ,NUM_AZ,YEAR_AZ,ID_ZAGS, для FLAG_CHANGE_REC = 0
  • unique index (..., case when FLAG_CHANGE_REC <> 0 then ID end)
    
  • add uni_register as (case when FLAG_CHANGE_REC = 0 then TYPE_AZ ||'~'|| NUM_AZ ||'~'|| YEAR_AZ ||'~'|| ID_ZAGS
    
  • Владимир СА
    Дата: 30.09.2015 10:30:35
    Elic
    Владимир СА
    Хотелось, чтобы в таблицу записывались записи с уникальным
    TYPE_AZ,NUM_AZ,YEAR_AZ,ID_ZAGS, для FLAG_CHANGE_REC = 0
    
  • unique index (..., case when FLAG_CHANGE_REC <> 0 then ID end)
    
  • add uni_register as (case when FLAG_CHANGE_REC = 0 then TYPE_AZ ||'~'|| NUM_AZ ||'~'|| YEAR_AZ ||'~'|| ID_ZAGS
    
  • Большое спасибо...