sql server - Unique constraint keys not invoked when a field is NULL -
i have table named aqi, following column
only 1 unique value of date
, pollutant_code
, source_id
, time
able exist, defined unique constraint source_code_time_uq
.
and upsert query like
insert aqi(source_id, source_type, pollutant_code, "date", "time", aqi_value) values (4, 1 ,'pm2.5','2018-05-28',8, 789) on conflict on constraint source_code_time_uq update set aqi_value = 789
the upsert method work when field available, when put null
in time
column (in attempt make row represent aqi data whole day), source_code_time_uq
constraint doesn't invoked , still insert new row.
so how can add unique constraint check on field can null
, need update upsert query ?
you can use filtered unique index:
create unique index unq_aqi_4 on (date, pollutant_code, source_id, time) time not null;
then, want guarantee 1 null
row per day, so:
create unique index unq_aqi_4 on (date, pollutant_code, source_id) time null;
of course, remove unique
constraint well.
Comments
Post a Comment