Oracle 10g: Suppose the following table (T_REGISTER):
ID_PROCESS PERIOD CUSTOMER STATUS
===========================================
0001234 201801 12300344 INVALID
0001236 201801 12300344 INVALID
0001246 201801 12300344 UNPAID
0001249 201801 12300344 UNPAID
0001278 201801 12300344 COMPLETED
ID_PROCESS is the PK.
But I also need that (PERIOD + CUSTOMER + STATUS) to be unique just when the STATUS is COMPLETED.
In other words, for one UNIQUE (PERIOD + CUSTOMER), I don't care having several INVALID or UNPAID rows, but I only can admit one unique (PERIOD;CUSTOMER; STATUS="COMPLETED")
Any elegant solution using CHECK CONSTRAINT before going for the trigger solution?
Thanks in advance…
Best Answer
Check constraints are not for enforcing uniqueness. Unique function-based index can do the job (because Oracle accepts multiple NULL values on unique columns).