2017-03-07 34 views
1

免責聲明:我已閱讀過類似的問題,這是不同的。無論訂單如何,兩列的唯一約束 - Oracle

我們必須創建一個飛行表「走」和「ARRIVE」項(即3個字符長(從LON飛往LAX)和距離,以及其他項目等 的主要制約因素是,該DEPART和ARRIVE對應該是唯一的,無論它們的順序(方向無所謂) 我知道我能做些什麼,但我們不允許(所以不建議):

  • 檢查DEPART>到達,然後檢查UNIQUE
  • 製作DEPART和ARRIVE主鍵(既不一起也不單獨,但它不會解決它)
  • 從其他表中引用它們,它們是鍵。

那麼如何檢查表中是否存在一對呢?我得說,這不是一項工業任務,而是一個大學學科。我們使用Oracle SQLDeveloper進行該任務。 提前謝謝! 此致敬禮。

回答

4

Oracle支持索引的表達式,所以:

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

(當然,fromto是SQL關鍵字,所以它們不是列名非常不錯的。)

+0

哦,是我不好,會編輯它(不是真正的名字) –

+0

謝謝! '在t上創建唯一的unq_t_from_to(最小(從,到),最大(從,到))' 是解決方案。自己找不到。 ty –

+0

** SUBQUESTION **我嘗試了最小和最大的一個,它仍然有效。你能解釋一下最不重要的事情嗎(他們究竟是什麼)? :) –