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

  • TesterID
  • TesterName
  • 是默认的
  • Application_ID

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

    我尝试了一个约束:
    alter table Tester add constraint Tester_ISDEFAULT UNIQUE(IsDefault,Application_ID);
    

    是否可以在 isdefault=Y 上制作唯一键?

    感谢帮助!

    最佳答案

    没有 UNIQUE 约束。但是,您可以使用 UNIQUE INDEX 代替:

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

    这是 DEMO

    关于sql - Oracle SQL 约束 where 子句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12177369/

    10-13 09:46