在postgresql中,如果一次执行多次SQL语句(在pgadmin中,选择所有这些语句并单击"执行"按钮,如此图片),
服务器将等到最后一个语句完成之前的语句才能生效。
当执行这些语句时,如果我运行SELECT * FROM tablename1
,则"关系不存在"会发生错误。
执行后,是否有任何方法使语句生效。 注意:如果每个CREATE语句都由它自己执行,则它需要非常短的时间。 SELECT语句需要很长时间。
答案 0 :(得分:3)
我假设,当您在pgadmin中选择一堆语句并点击“执行”时,它们都会在一个transaction中运行。这意味着,在提交之前,事务的结果将不会对其他并发会话可见(或者如果事务失败,则根本不可见)。
尝试在每个COMMIT;
之后或最后一个之后添加显式CREATE TABLE
。
您可能还想了解transaction isolation。