【发布时间】:2014-05-09 20:54:57
【问题描述】:
在一个 SQL 语句中,我尝试插入一行,如果由于约束而失败,则返回现有行。
我有:
INSERT INTO session (token, expiry) SELECT 'abcdefg', '2014-05-14 20:25:12.279667' WHERE NOT EXISTS (SELECT * FROM session where token= 'abcdefg');
token 列具有唯一约束。我尝试在末尾附加RETURNING *,但这仍然没有返回现有行。
这是为什么?我以为我最后的SELECT 语句将被执行并返回。有什么想法吗?
注意:由于一些复杂的竞争条件,我不能使用 Postgres 函数或多个 SQL 语句。
【问题讨论】:
标签: sql postgresql