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