I have to update some nodereference fields from custom code in myModule. This has to be done when a new node of a particular type is being inserted so I implemented hook_node_insert as follows:
function myModule_node_insert($node){
$settings = _settings_forms_nodereference_fields($node->type);
$field = $settings['field'];
$language = field_language('node', $node, 'body');
$node->{$field}[$language][0]['nid'] = 408;
$node->{$field}[$language][1]['nid'] = 408;
$node->{$field}[$language][2]['nid'] = 408;
node_save($node);
}
However, each time I try to create a new node, I get the following error;
PDOException: SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '436' for key 'PRIMARY': INSERT INTO {node} (nid, vid, type, language, title, uid, status, created, changed, comment, promote, sticky, tnid, translate) VALUES ....
I have discovered it is because of the node_save function but without it my changes are not committed.
The full array is as follows:
[field_event_form_s_] => Array
(
[und] => Array
(
[0] => Array
(
[nid] => 261
)
[1] => Array
(
[nid] => 262
)
[2] => Array
(
[nid] => 263
)
)
)