当插入与songid
的值之一冲突时,我需要返回现有记录sc_link, yt_link, spot_link
(PK序列)的ID。
sc_link, yt_link, spot_link
都具有独特的约束。
当我运行此查询
INSERT INTO songs (created, lat, lng, mood, genre, format, cxc_views, sc_link, yt_link, spot_link, soundcloud_id_author, yt_channel_id_author)
VALUES (CURRENT_TIMESTAMP, '51.06901665960392', '-129.02343750000003', 'joyful', 'reggaeton', '', '0', NULL, 'vYeenwUBjRg', NULL, NULL, 'UCG94rpZEA7WG1eN_UC8GsDA')
ON CONFLICT (sc_link, yt_link, spot_link)
DO UPDATE SET title=EXCLUDED.title
RETURNING songid;
我收到以下错误
ERROR: duplicate key value violates unique constraint "yt_unique"
DETAIL: Key (yt_link)=(vYeenwUBjRg) already exists.
SQL state: 23505
那会没事的(我知道有一个骗子),除了我需要找回songid
以便我可以向用户显示歌曲已经在应用程序上了。
此外,ON CONFLICT
甚至没有运行,因为删除最后三行时出现相同的错误。
为什么ON CONFLICT
及以下版本未运行?其他的SO答案表明此UPSERT解决方案运行良好。
我是PostgreSQL的新手,使用11.4从MySQL移植应用程序。谢谢!