【问题标题】:Unique constraint in PL/SQL of date field limited to the year日期字段的 PL/SQL 中的唯一约束限制为年份
【发布时间】:2015-07-14 07:42:48
【问题描述】:

在一个表中,我对 VARCHAR2DATE 字段有一个唯一约束。一切正常!

现在,我只想在我的唯一约束中考虑 (!) DATE 字段的年份。

PL/SQL有没有机会做这样的事情?

感谢您的帮助!

亲切的问候

【问题讨论】:

    标签: sql oracle unique-constraint


    【解决方案1】:

    这里不需要PL/SQL,只需要在年份上创建唯一索引即可:

    create unique index unique_year 
      on the_table (the_varchar_column, extract(year from the_date_column));
    

    【讨论】:

    • 谢谢,伙计!为什么要使用唯一索引,而不是唯一约束?
    • @mrbela 如果您希望 外键 引用此列,则需要唯一约束。此外,唯一约束不一定会创建索引唯一索引
    • @LalitKumarB:唯一约束创建唯一索引(除非您告诉它使用现有的非唯一索引)
    • @a_horse_with_no_name 唯一约束可以使用现有的非唯一索引,不一定创建唯一索引。 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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多