所以我想在這裏通過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