【问题标题】:Unique constraint on two columns regardless of order - Oracle无论顺序如何,两列的唯一约束 - Oracle
【发布时间】:2017-07-28 08:27:29
【问题描述】:

免责声明:我读过类似的问题,它是不同的。

我们必须创建一个包含“DEPART”和“ARRIVE”条目(即 3 个长字符(从 LON 到 LAX 的航班)和距离以及其他条目等)的航班表。 主要约束是,DEPART 和 ARRIVE 对应该是唯一的,无论它们的顺序如何(方向无关紧要)。 我知道我可以做但我们不允许做的事情(所以不建议):

  • 检查 DEPART > ARRIVE 然后检查 UNIQUE
  • 制作 DEPART 和 ARRIVE 主键(既不能一起也不能单独,虽然这不能解决问题)
  • 从其他表中引用它们,它们是键。

那么我如何检查表中是否存在一对?我得说这不是针对工业任务,而是针对大学科目。我们使用 Oracle SQLDeveloper 来完成这项任务。 先感谢您! 问候。

【问题讨论】:

    标签: sql oracle oracle10g oracle-sqldeveloper


    【解决方案1】:

    Oracle 支持表达式索引,所以:

    create index unq_t_from_to on t(least(from, to), greatest(from, to))
    

    (当然,fromto 是 SQL 中的关键字,所以它们不是很好的列名。)

    【讨论】:

    • 谢谢! create unique unq_t_from_to on t(least(from, to), greatest(from, to)) 是解决方案。自己查不出来。 ty
    • SUBQUESTION 我单独尝试了最小和最大,它仍然有效。你能解释一下最小/最大做什么(以及它们到底是什么)吗? :)
    • @NajibGhadri 。 . .它们只是返回最小或最大参数的函数,例如连续返回 min()max()
    猜你喜欢
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多