Oracle SQL约束where子句

Joh*_*hv1 3 sql oracle constraints clause where

我在oracle上有表Tester,其中包含以下列:

  • TesterID
  • TesterName
  • ISDEFAULT
  • APPLICATION_ID

TesterID是主键.现在我希望只有一个Default Tester,这意味着只有一个Tester可以在ApplicationID上拥有CalDe IsDefault = Y.

我用一个约束尝试了它:

alter table Tester add constraint Tester_ISDEFAULT UNIQUE(IsDefault,Application_ID);
Run Code Online (Sandbox Code Playgroud)

是否可以在isdefault = Y的哪个位置创建唯一键?

感谢帮助!

Joã*_*lva 7

没有UNIQUE约束.但是,您可以使用UNIQUE INDEX:

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

这是一个演示.