2014-09-13 48 views
1

是否有可能在oracle 11中使用trunc(date)函數alter table - >add constraint聲明?在ADD CONSTRAINT語句中使用TRUNC()

ALTER TABLE customers 
ADD CONSTRAINT pk_name PRIMARY KEY (name, trunc(birth_date)) 

編輯:我之所以要問的是,這是行不通的 - 該錯誤信息是ORA-00904無效的標識符,那麼:

怎樣纔可以有一個日期列只有日期部分我的主鍵?

+0

試試吧,讓我們知道...... – 2014-09-13 16:59:04

回答

4

這很容易測試。答案似乎是「不」。相反,你可以這樣做:

primary key (name, birth_date) 
check birth_date = trunc(birth_date) 

這兩個約束條件會產生同樣的效果。

或者,創建一個獨特的功能指數:

create unique index idx_customers_name_birthdate on customers(name, trunc(birth_date)); 

這本質上具有防止重複方面同樣的效果。同時聲明NOT NULL(如主鍵所需)。

+0

@a_horse_with_no_name。 。 。謝謝。 – 2014-09-13 18:32:59