【问题标题】:Oracle. Constrain one row to have a certain value甲骨文。约束一行具有一定的值
【发布时间】:2014-03-17 09:21:06
【问题描述】:

我想向表中添加一个约束,在该表中,任何时候都只能存在一行,并且某一列中有一个值。

例如 创建表 MyTable …… 状态 varchar(1); )

对状态列的检查将是“O”、“C”、“P”,表示打开、关闭或待处理。

可以有多个 Closed 和 Pending,但表中只能有一个(或没有)行是 Open。​​

任何指针表示赞赏。

【问题讨论】:

  • 创建一个触发器,在添加“O”时查询表以确保该表不存在?

标签: sql oracle constraints


【解决方案1】:

创建唯一的函数索引:

CREATE UNIQUE INDEX myindex ON mytable( CASE status WHEN 'O' THEN 'O' END );

它将阻止插入两个“O”值,但允许其他重复值。

【讨论】:

    猜你喜欢
    • 2017-02-22
    • 2011-11-26
    • 1970-01-01
    • 2012-07-27
    • 2015-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多