通过下面的语句,我可以在一个表中插入多行。如果标签已经存在,那么什么也不会发生,如果它不存在,则创建行。你知道吗
INSERT INTO tags (name) VALUES ('this'),('is'),('my'),('interest'),('list'),('running'),('pokemongo'),('fighting'),('eating') ON CONFLICT DO NOTHING;
是否可以返回所有这些值的ID,无论它们是否存在?你知道吗
我在postgres9.5中使用python psycopg2。你知道吗
编辑: 好的,使用这个解决方案,您将只获得插入行的id。你知道吗
如果需要所有ID,则必须进行另一个查询:
这可以通过使用WITH块在一个查询中完成(参见WITH和SELECT上的PostgreSQL文档)。例如:
也可以用
WHERE c1 NOT IN (SELECT name FROM tags)
替换ON CONFLICT DO NOTHING
。这将在不依赖由唯一索引引起的冲突的情况下工作。你知道吗相关问题 更多 >
编程相关推荐