2014-09-13 51 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