There's a table

```
CREATE TABLE IF NOT EXISTS table00 (
  userid     int8    PRIMARY KEY,
  save       date    NOT NULL,
  value      int4
);
```

where I want to upsert values IFF the `date` is not the same for a given `userid`, which I'm doing like so:

```
INSERT  INTO table00 (userid,save,value)  VALUES (%s,%s,%s)
ON CONFLICT (userid)  DO UPDATE  SET save=EXCLUDED.save, value=EXCLUDED.value
WHERE table00.save!=EXCLUDED.save;
```

But I'd prefer to add

```
CREATE  UNIQUE INDEX  ON table00   (userid, save);
```

and **drop the `WHERE` statement**. Is that possible?

But this isn't working, since values are still being updated even if they're on the same day; ie. the `ON CONFLICT` seems to swallow up all errors and do the upsert anyways regardless of any uniqueness constraints.

The logic I want is: "If the `userid` doesn't exist, then insert a new row. If the `userid` exists, then update its row, **unless** the date is the same, in which case **fail**."

So, something like:

```
INSERT  INTO table00 (userid,save,followers)  VALUES (%s,%s,%s)
ON CONFLICT (userid)  DO UPDATE SET  save=EXCLUDED.save, followers=EXCLUDED.followers
ON CONFLICT (userid,date)  DO NOTHING;
```