0
我有一個來自一個表(FileInstance)的多個SELECT的請求,這些SELECT使用MAX函數。 在此INSERT語句SELECT MAX(Sequence) FROM FileInstance
中會給出相同的結果嗎? 是否有可能在這些SELECT之間添加記錄,我會捕獲不同的值?多選請求期間數據是否可以更改?
INSERT INTO
FileInstance (Data, Size, FileID, ChangesetID)
VALUES
(
(SELECT Data FROM FileInstance WHERE FileID=%1 AND Sequence=(SELECT MAX(Sequence) FROM FileInstance WHERE FileID=%1)),
(SELECT Size FROM FileInstance WHERE FileID=%1 AND Sequence=(SELECT MAX(Sequence) FROM FileInstance WHERE FileID=%1)),
%1,
NULL
);
五言中,我認爲這兩個電話SELECT MAX(序列)FROM FileInstance WHERE =寫到FileID 1%將轉化爲一個呼叫,但我只是想確定。
我使用postgresql 9.2。 謝謝!
謝謝你,並優化了。 – Serhiy 2013-04-30 07:31:17
@Serhiy:請參閱我關於併發事務問題的編輯。 – 2013-04-30 07:34:11
在我的情況下,concurent insert是不可能的,我在其他表中有一個警衛作爲唯一記錄。 – Serhiy 2013-04-30 07:44:04