node-red-contrib-stackhero-mysql
node-red-contrib-stackhero-mysql copied to clipboard
Support Array of values for bulk inserts
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;