Zend的数据库最后ID插入的行。 (使用的是Postgres)(Zend Database L

2019-09-26 10:41发布

好了,得到这个查询(工作正常,插入一个全...)

$db = Zend_Db_Table::getDefaultAdapter();
$data = array(
    "comment_id" => new Zend_Db_Expr("nextval('comments_comment_id_seq')"),
    "comment" => $comment,
    "comment_level" => 1,
    "is_active" => true,
    "status" => 0,
    "id" => $id,
    "user_id" => $_SESSION['role']['user_id'],
    "ts_create" => $created,
    "ts_mod" => $created
);
$db->insert($this->_name, $data);
$newID = $db->lastInsertId();

我甚至试过连

$newID = $db->insert($this->_name, $data);

我不能得到的ID的价值。 它不是mysql的(我),所以我想这就是我的第一个问题,因为Postgres没有出现在我习惯用它ATLEAST工作方式的autoincriment。 所以在这里,我希望有人能帮助我。 无论如何,以获得“COMMENT_ID”栏目ID,在新插入的项目? 因为现在我尝试lastInsertID和我得到的是虚假或1这两种情况下是错误的。

Answer 1:

那么GordonM指出我在Zend的特定文档的方向,即通过阅读,我能找到我所需要的。 不幸的是没有人提供了一个实际的答案。 所以,我要回答我的问题,对于那些他们被困在了类似的立场,因为我刚。但会给赞成票,以GordonM为我安排在正确的方向时,谁可以通过它绊倒。 由于GordonM

更改:

$newID = $db->insert($this->_name, $data);

至:

$newID = $db->lastSequenceId('comments_comment_id_seq');


Answer 2:

从Zend的文档 ,使用序列产生自动递增(如Postgres的)要求您的数据库指定名字在lastInsertId()调用的顺序。



Answer 3:

自动递增的字段被实现为PostgreSQL的顺序,插入一个新的值时,将数据库从这个序列读取。 你必须调用lastInsertId(),以得到正确的值时使用该序列的名称。



文章来源: Zend Database Last ID of inserted row. (Using postgres)