sql - Check if a value appears only once in a column -
i want create table managing versions of parameters...
in table there column of type char
lets me know version have use :
create table parameters_version ( id number not null, version number not null, date_start date not null, date_end date check(date_start <= date_end) not null isused char(1) check(isused in ('y','n')) not null, constraint parameters_version_version_pk primary key (id), constraint parameters_version_version_uk unique (isused) );
how define unique constraint on column isused
have single row value 'y
' (and others 'n
') ?
by way, check constraint on date_end
correct ?
oracle doesn't quite support partial or filtered indexes. instead, can use functional index cleverness:
create unique index idx_parametersversion_isused on parameters_version(case when is_used = 'y' -1 else id end);
that is, when is_used
has value other y
, primary key used. when y
, constant used, 2 values conflict.
Comments
Post a Comment