Как узнать последнее значение auto_increment для поля nid таблицы node?

Главные вкладки

Аватар пользователя yasik yasik 27 июля 2010 в 0:23

На моем сайте работающем на пятом друпале был такой запрос насколько я понял он возвращал nid последней созданной ноды
$node_before = db_result(db_query("SELECT id FROM {sequences} WHERE name = '{node}_nid'", db_prefix_tables('{node}_nid')));

В 6 таблицы sequences уже нет как получить нужный nid?
погуглив в том числе и на этом сайте
Я подумал что что-то типа такого $node_beforе = db_last_insert_id('node', 'nid'); должно работать однако это возвращает "0"
Что я делаю не так ?

Комментарии

Аватар пользователя Xermit Xermit 27 июля 2010 в 0:27

вставить запись надо раньше чем получить ее nid, то есть ее сначала вставляют потом получают id, может в этом дело?

Аватар пользователя yasik yasik 27 июля 2010 в 1:15

В этом наверно, только у меня задача стоит, что нужно получить просто значения без вставки ноды.

Думал взять что типа максимальное значение nid что есть в таблице тоже не подходит если например создать ноду с номером 1001, а потом удалить ее максимальное значение будет 1000 а счетчик auto_increment 1001.

Аватар пользователя yasik yasik 4 августа 2010 в 2:51

У меня есть модуль который импортирует из xls делали на заказ
так в пятерке там так количество импортируемых нод считали
сделают запрос до импорта, сделают запрос после импорта,
вычли одно из другого получили разницу

Аватар пользователя George88 George88 27 июля 2010 в 12:56

Как вариант можно вставит тестовую запись, получить id через функцию db_last_insert_id, Удалить запись и проинкреминтирвать id

Аватар пользователя yasik yasik 4 августа 2010 в 2:46

eLSe wrote:
SELECT MAX(nid) last_nid FROM {node}

Спасибо, но это в некоторых случаях не правильно работает

Если взять последнии внесеные ноды удалить.
Пример у вас есть ноды с NID -1000 -1001 -1002 -1003 -1004
удаляем ноды -1001 -1002 -1003 -1004
теперь если сделать такой запрос, он вернет 1000

а новая нода будет иметь NID 1005