John Smithv1 John Smithv1 - 7 months ago 10
SQL Question

Oracle SQL Constraint where clause

I have the table Tester on oracle with the following columns:


  • TesterID

  • TesterName

  • IsDefault

  • Application_ID



TesterID is the primary key.
Now I want that there can only be one Default Tester, which means only one Tester can have the calues IsDefault =Y at an ApplicationID.

I tried it with a constraint:

alter table Tester add constraint Tester_ISDEFAULT UNIQUE(IsDefault,Application_ID);


Is it possible to make the unique key on where isdefault= Y?

Thanks for help!

Answer

Not with a UNIQUE constraint. However, you can use a UNIQUE INDEX instead:

CREATE UNIQUE INDEX ApplicationId_Default_Y ON tester (
  CASE WHEN IsDefault = 'Y'
       THEN ApplicationId
       ELSE NULL
  END
);

Here's a DEMO.

Comments