这是我的疑问:
INSET INTO cities (name, country_id)
VALUES ('New York', 11), ('London', 215), ('Moscow', 66)
是否正确地按行查询顺序插入行?因此,New Yor将首先插入,而不是伦敦,而不是莫斯科。是否有可能首先插入伦敦? 我在postgresql文档中找不到这些信息。
编辑:
所以,我需要知道,认为首先是纽约,第二个是伦敦,第三个是莫斯科,这是安全的。
edit2:
我只需要将城市与已返回的ID相关联。 完整查询:
INSET INTO cities (name, country_id)
VALUES ('New York', 11), ('London', 215), ('Moscow', 66)
RETURNING id
那么,多次插入是不可能的?
EDIT3:
我的问题重复了这一个:Is INSERT RETURNING guaranteed to return things in the "right" order? 所以,我想确保我需要在它自己的查询中进行每个插入。 感谢。
答案 0 :(得分:1)
数据未按指定顺序存储。
答案 1 :(得分:1)
可以返回多个值,因此您可以通过这种方式匹配它们,例如:
INSET INTO cities (name, country_id)
VALUES ('New York', 11), ('London', 215), ('Moscow', 66)
RETURNING id, name, country_id
只需选择要返回的列。
答案 2 :(得分:0)
如果没有“ORDER BY”子句,则SELECT语句不必按照插入的顺序返回记录。
也许您应该在表格中添加一个自动增量标识字段,然后按此字段对结果进行排序。
答案 3 :(得分:0)
如果您太关注插入数据的顺序,请在表中添加一列作为序列,在isnert期间指定
示例:
INSET INTO cities (
seq,
name,
country_id
)
VALUES ( seq + 1, 'New York', 11)
INSET INTO cities (
seq,
name,
country_id
)
VALUES ( seq + 2, 'London', 215)... etc
当然通过从已插入的数据中获取先前的seq
值来初始化您的序列