in reply to [OT] SQL "on duplicate key" custom action
I think the "best" approach (if that is supported by your DBMS) are ON UPDATE triggers, or if that import is a one time thing only, creating a unique key across all columns:
create or replace function skip_insert() returns trigger language plpg +sql as $$ begin return null; end $$; create or replace function raise_exception() returns trigger language +plpgsql as $$ begin RAISE EXCEPTION 'UPDATE changing row values not allowed'; end $$; CREATE TRIGGER mytrigger ON records INSTEAD OF UPDATE WHEN old.PriKey = new.PriKey and old.Foo=new.Foo and old.Bar=new.B +ar FOR EACH ROW EXECUTE PROCEDURE skip_insert() CREATE TRIGGER mytrigger ON records INSTEAD OF UPDATE WHEN old.PriKey = new.PriKey and (old.Foo!=new.Foo or old.Bar!=new +.Bar) FOR EACH ROW EXECUTE PROCEDURE raise_exception()
... but this approach does not handle NULL values.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: [OT] SQL "on duplicate key" custom action
by haukex (Archbishop) on Jan 28, 2020 at 15:00 UTC | |
by haukex (Archbishop) on Oct 10, 2021 at 09:47 UTC | |
by haukex (Archbishop) on Feb 24, 2020 at 17:16 UTC | |
|
Re^2: [OT] SQL "on duplicate key" custom action
by erix (Prior) on Oct 21, 2019 at 16:25 UTC | |
by Corion (Patriarch) on Oct 21, 2019 at 16:34 UTC | |
|
Re^2: [OT] SQL "on duplicate key" custom action
by haukex (Archbishop) on Oct 21, 2019 at 15:00 UTC | |
by Corion (Patriarch) on Oct 21, 2019 at 15:44 UTC | |
by haukex (Archbishop) on Oct 21, 2019 at 18:20 UTC |