【发布时间】:2015-07-14 07:42:48
【问题描述】:
在一个表中,我对 VARCHAR2 和 DATE 字段有一个唯一约束。一切正常!
现在,我只想在我的唯一约束中考虑 (!) DATE 字段的年份。
PL/SQL有没有机会做这样的事情?
感谢您的帮助!
亲切的问候
【问题讨论】:
标签: sql oracle unique-constraint
在一个表中,我对 VARCHAR2 和 DATE 字段有一个唯一约束。一切正常!
现在,我只想在我的唯一约束中考虑 (!) DATE 字段的年份。
PL/SQL有没有机会做这样的事情?
感谢您的帮助!
亲切的问候
【问题讨论】:
标签: sql oracle unique-constraint
这里不需要PL/SQL,只需要在年份上创建唯一索引即可:
create unique index unique_year
on the_table (the_varchar_column, extract(year from the_date_column));
【讨论】:
CREATE TABLE t( A NUMBER, b NUMBER ); CREATE INDEX t_indx ON t(A,b); ALTER TABLE t ADD CONSTRAINT t_unq UNIQUE(a); SELECT index_type, uniqueness FROM user_indexes WHERE table_name = 'T';
ALTER TABLE MY_TABLE ADD CONSTRAINT MY_CONSTRAINT_NAME UNIQUE (MY_VARCHAR, EXTRACT(YEAR FROM MY_DATETIME)); 不起作用吗?我收到 SQL 异常 ORA-00904。