node-red-contrib-stackhero-mysql icon indicating copy to clipboard operation
node-red-contrib-stackhero-mysql copied to clipboard

Support Array of values for bulk inserts

Open volkmarnissen opened this issue 10 months ago • 0 comments
trafficstars

This fix avoids locked objects when inserting multiple rows to the same table by firing multiple query requests. The queries can run at the same time and generate locking errors.

Example: msg.payload contains array of objects to insert. A split node generates an single payload for each of them and passes them to the mysql node. You might get lock errors, because all values will be executed in paralell

It's better to execute all inserts in one statements and in one transaction.

If the payload, contains an array, all objects in that array will be processed in one transaction. No split node is required. if the payload contains an object, it's treated as an array with one entry.

Example topic and payload

msg.topic = "insert into test (date_hour, price) " +
    "select :hour, :price  from dual where not exists( select hour from test where " +
    "hour =:hour);\n"

msg.payload  = [{ date_hour: 1234, price:0.234},{ date_hour: 12345, price:0.235}]
return msg;

volkmarnissen avatar Jan 09 '25 11:01 volkmarnissen