在ADD CONSTRAINT语句中使用TRUNC()

时间:2014-09-13 16:49:12

标签: sql oracle date constraints primary-key

是否可以在trunc(date) - >中的oracle 11中使用alter table函数add constraint声明?

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

编辑:我问的原因是它不起作用 - 错误信息是ORA-00904无效的标识符,所以:

如何在主键中只包含DATE列的日期部分?

1 个答案:

答案 0 :(得分: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(如主键所需)。