如何将MySQL字段设置为另一个字段的动态生成值?

时间:2010-10-25 19:58:20

标签: mysql drupal

我正在使用drupal,它的节点表上有两个名为nidvid的字段。我看到的每条记录似乎都具有nidvid的相同值。

我正在乱砍并以非drupal的方式插入节点,我想确保vid设置为nid的任何值。

为了便于解释,这里有一些我希望的东西:

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

value_of当然不存在,但希望你能理解我正在寻找的东西。

2 个答案:

答案 0 :(得分:1)

你缺少一些重要的理解。

  • {node}保存有关每个节点的信息,pk和serial是nid(节点id),vid是对{node_revisions}表的引用。
  • {node_revisions}包含有关节点主体字段的信息。这里vid是pk和serial,同时它还有一个nid,它是对{node}表的引用。

一个节点可以有多个修订版。这使得可以保存同一节点的旧版本。如果您从未对节点进行过新的修订,那么nid和vid将是相同的,但是对于每个新修订版本,vid将在nid保持不变的情况下增加。

所以简而言之,nid和vid不应该相等,但在某些情况下它们是相同的。您应该使用{node_revisions}来获取插入{node}表的vid。

答案 1 :(得分:0)

您可以使用nodefactory模块创建新节点。它不会制动drupal db结构并创建填充了所有必填字段的节点。然后你甚至可以使用cck字段。这是从代码中创建节点的正确方法。