是否可以在trunc(date)
- >中的oracle 11中使用alter table
函数add constraint
声明?
ALTER TABLE customers
ADD CONSTRAINT pk_name PRIMARY KEY (name, trunc(birth_date))
编辑:我问的原因是它不起作用 - 错误信息是ORA-00904无效的标识符,所以:
如何在主键中只包含DATE列的日期部分?
答案 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
(如主键所需)。