Пожалуйста, рассмотрите следующую структуру таблицы в Oracle:
create table DOCS
(
DOC_NO NUMBER not null,
DOC_TYPE VARCHAR2(5) not null,
PMT_NO NUMBER not null
);
В этой таблице столбец PMT_NO должен быть уникальным, за исключением случаев, когда DOC_NO одинаково, а DOC_TYPE отличается:
DOC_NO DOC_TYPE PMT_NO
---------- -------- ----------
1 A 10 <-- good
1 B 10 <-- good, DOC_NO is the same
2 C 10 <-- NOT good, DOC_NO is different
PMT_NO не может повторяться и не может иметь «дыр» (то есть 1, 2, 3, 5), поэтому последовательность не будет работать. И есть много пользователей, вставляющих данные одновременно.
Есть ли способ создать уникальный ключ / уникальный индекс / индекс на основе функций для этого условия?
Спасибо!