2014-07-07 92 views
1

我想在數據庫的數千列上創建檢查約束,但是所有約束都需要一個在數據庫中唯一的名稱。我想使用guid,但由於Oracle的限制,名稱不能超過30個字符。在Oracle中創建唯一標識符名稱的最佳方式是什麼?

下面是語法的例子:

CREATE TABLE mytable 
(
    col1 DATE 
     DEFAULT to_date('19000101', 'yyyymmdd') 
     CONSTRAINT unique_name_needed CHECK(col1 = TRUNC(col1)) 
     NOT NULL 
) 
+5

只需不指定名稱即可。 Oracle會爲你生成一個。 –

+0

一些命名標準,包括約束名稱中的表名(至少前幾個字符)附加數字。我曾經有過這個,所以使用這個名字,我可以確定它是哪張桌子! –

+0

謝謝a_horse_with_no_name。我實際上嘗試刪除名稱,但讀取您的評論,我意識到我也必須刪除'約束'關鍵字。感謝名單。但我仍然希望有人提出一個很好的答案。我還需要臨時表名稱等。 –

回答

1

我們使用3個字母的短名稱爲每個表。我們用這三個字母來命名我們的約束。所以mytable的簡稱可能是mtb。

約束名稱,則:

Primary: mtb_pk 
Unique: mtb_uk 
Foreign: mtb_otb_fk where otb is the short name of the other table. 

當然,關鍵是要拿出每一個表中是唯一的短名稱。

相關問題