Лучше не кодировать напрямую схему db, так как написание запросов самостоятельно создает избыточность. Вы всегда должны использовать API узла.
Drupal вызывает api узла при выполнении сохранения узла. Это дает всем другим модулям в вашем приложении возможность изменять узел любым удобным для них способом. Таким образом, вполне вероятно, что ваш код работает правильно, просто не так, как вы ожидаете. Например, другой модуль может установить состояние узла после того, как вы его установите, и перепишите свое значение.
Это может быть немного сложно для отладки. Вы можете попробовать изменить вес модуля, в котором работает ваш код, чтобы вызывать его после всего остального. Это одно из немногих исключений, где вы можете изменить схему базы данных напрямую (есть модуль, который отображает веса модулей в пользовательском интерфейсе, но это ужасная идея). Мне не особенно нравится полагаться на веса модулей, чтобы заставить код работать. Вы можете столкнуться с условиями гонки, но это, по крайней мере, определит это как причину.
См:
http://api.drupal.org/api/drupal/modules--node--node.module/function/node_save/6