update only if different
------------------------
Key: CORE-3684
URL: http://tracker.firebirdsql.org/browse/CORE-3684
Project: Firebird Core
Issue Type: New Feature
Reporter: Philip Williams
Priority: Trivial
Allow update and insert-or-update statements to have a flag for "no trivial
changes", if the update would have no effect except locking the row. Something
like "update people set name = 'Bob' where id = 5 ONLY IF DIFFERENT". This is
useful for migration / data-loading scenarios where you're running large import
datasets, but you just want the data to end up a certain way, you don't want
record locks / versions on rows that didn't really need to be touched. It'd be
entirely optional, only for situations where you know you don't want do-nothing
updates to trigger on-update triggers or place locks, and you're okay with it.
To accomplish this currently, a simple:
update or insert into people (name, id) values ('Bob', 5);
becomes
if (not exists(select id from people where id = 5)) then insert into people
(name, id) values ('Bob', 5)
else update people set name = 'Bob' where id = 5 and name is distinct from
'Bob';
-- not so bad for one field, but much more annoying for high-column-count tables
I know it's a very niche feature.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
------------------------------------------------------------------------------
All the data continuously generated in your IT infrastructure
contains a definitive record of customers, application performance,
security threats, fraudulent activity, and more. Splunk takes this
data and makes sense of it. IT sense. And common sense.
http://p.sf.net/sfu/splunk-novd2d
Firebird-Devel mailing list, web interface at
https://lists.sourceforge.net/lists/listinfo/firebird-devel