我在PHP中使用PDO和PostgreSQL。是否有可能在插入之前將id插入到數據庫中
我會讓我的用戶上傳文件。
我想將記錄ID添加到保存的圖像。
是否有可能在插入數據庫之前獲取(或保留)記錄ID。
我不認爲這是可能的只是想確定。
我在PHP中使用PDO和PostgreSQL。是否有可能在插入之前將id插入到數據庫中
我會讓我的用戶上傳文件。
我想將記錄ID添加到保存的圖像。
是否有可能在插入數據庫之前獲取(或保留)記錄ID。
我不認爲這是可能的只是想確定。
是的,您應該使用postgres函數nextval
來獲取序列中的下一個值。查看錶格id列中的默認值,它應該包含nextval對所用序列的調用。
例如,如果表看起來是這樣的:
image_id bigint not null default nextval('image_image_id_seq'::regclass)
data bytea not null
您可以撥打:
SELECT NEXTVAL('image_image_id_seq') ;
從而將 「儲備」 的ID爲您稍後使用:
INSERT INTO image (image_id, data) VALUES (?, ?) ;
您也可以這樣做:
BEGIN
INSERT RETURNING
get id
rename file
COMMIT
我不知道PostgreSQL,但也許你可以得到插入的最後一個ID。給它添加1可能會給你的ID插入假設你的ID是具有身份屬性的主鍵。 –
如果最後一條記錄被刪除,該怎麼辦?這將明確地得到錯誤的ID。 – PeeHaa
@nevayeshirazi這是一個壞主意。如果另一個會話添加一行或使用該機制獲取相同的ID,會發生什麼? – Mike