2010-10-25 1 views
0

Я схожу с drupal и имеет два поля: nid и vid на таблице узлов. Каждая запись, на которую я смотрю, имеет одинаковое значение как для nid, так и для vid.Как установить поле MySQL как динамически генерируемое значение другого поля?

Я взламываю и вставляю узлы недругальным способом, и я хочу убедиться, что vid настроено на любое значение nid.

Для удобства объяснения, вот то, что я надеюсь на:

INSERT INTO node (vid, type, blah, blah) VALUES (value_of(nid), "webpage", "blah", "blah"); 

value_of не существует, конечно, но, надеюсь, вы получите представление о том, что я ищу.

+0

Похоже, вы хотите создать триггер вставки. –

+0

Вы пишете инструкцию 'INSERT' вручную? Если это так, просто заполните то же значение для 'nid', как и для' vid'. Я не могу представить себе более простого, более легкого для понимания/поддержания решения. Но если вы не пишете 'INSERT' вручную, как они генерируются? Это сильно повлияет на решение. – VoteyDisciple

+0

посмотрите на http://stackoverflow.com/questions/2135033/drupal-what-does-vid-mean-in-drupal, чтобы узнать, каковы они оба, вы можете не захотеть всегда иметь их одинаковыми. –

ответ

1

Вам не хватает какого-либо жизненно важного понимания.

  • {node} содержит информацию об каждом узле, pk и serial - это идентификатор узла (node ​​id), vid - ссылка на таблицу {node_revisions}.
  • {node_revisions} содержит информацию о поле тела узла. Здесь vid - это pk и serial, в то время как у него также есть nid, который является ссылкой на таблицу {node}.

Один узел может иметь несколько ревизий. Это позволяет сохранить старые версии одного и того же узла. Если вы никогда не делаете новую ревизию узла, то nid и vid будут одинаковыми, но для каждой новой ревизии vid будет увеличиваться, пока nid останется прежним.

Таким образом, ничто и vid не должны быть равными, но в некоторых случаях они есть. Вам нужно {node_revisions} получить vid для вашей вставки в таблицу {node}.

+0

Спасибо. Я пишу простой скрипт сценариев создания/производства, и с вашей информацией я просто обновил его, чтобы захватить каждый node_revision, а также каждый узел. –

0

Вы можете использовать модуль nodefactory для создания нового узла. Он не тормозит структуру dup drupal и создает узлы со всеми заполненными полями. Затем вы можете использовать даже поля cck. Это правильный способ создания узлов из вашего кода.

Смежные вопросы