所以我想在这里通过PHP的PDO运行一些SQL(我不认为应该是问题)像这样:PostgreSQL的 - CURVAL不工作,使用PHP PDO
INSERT INTO example (
d_id,
s_id
)
VALUES (
currval('d_id_seq'),
currval('s_id_seq')
);
我有两个序列,分别叫做d_id_seq
和s_id_sec
(让我们假装我有一个名为d
的表和一个名为s
的表,这个序列是一个名为ID和serial
类型的列)。
现在,很明显,我这样做不对,因为我得到一个错误关于未在此会话中使用的序列:
Object not in prerequisite state: 7 ERROR: currval of sequence "d_id_seq" is not yet defined in this session
那么,应该如何我写这篇文章?
通常在插入中使用NEXTVAL,并使用CURVAL读取插入的值。看文档。 http://www.postgresql.org/docs/9.0/interactive/functions-sequence.html – leonbloy
我插入* other *表中的值,而不是这个。 – Incognito
然后你应该从表中自己读取这些值(如果你有它们的密钥),或者确保它们已经被“最近”插入到这些表中 - 即在这个会话(连接)期间。顺便说一句,这完全与PHP PDO无关,正如你正确地怀疑的那样。 – leonbloy