运行UPDATE ELSE INSERT命令

时间:2017-12-10 17:55:27

标签: mysql

我每分钟运行一个脚本,分析广播中正在播放的内容,并INSERTs将其放入我的表格music,其中包含字段bandsong和{ {1}}。

为了防止在后续脚本执行时仍在播放的歌曲,我设置了以下规则以防止这些歌曲被重读:

start_time

现在,我想将ALTER TABLE music ADD UNIQUE unique_index (band, song, start_time); 更改为start_time并添加last_played

如果乐队和歌曲存在于表格中并且当前的last_played不等于当前的开始时间,那我正在考虑运行UPDATE以将play_count增加1。然后,如果失败了,我会插入一条新记录,其中last_played等于当前的开始时间。这样,如果歌曲已经存在,则会更新,可以添加新歌曲,并且由于unique_index,它会阻止添加相同的播放歌曲。

play_count

问题是看起来我先不能先运行UPDATE然后再执行INSERT命令。一切似乎都是Pseudo Code: UPDATE music SET play_count=play_count+1 WHERE band = $band AND song=$song AND last_played!=$start_time ELSE INSERT INTO music (band, song, last_played, play_count) VALUES ($band, $song, $start_time, 1); 命令。如果我先运行一个INSERT,然后UPDATE我会在INSERT上播放仍然无法播放的歌曲(这很好),但由于我在INSERT上没有INSERT ... ON DUPLICATE KEY UPDATE ...,它将会增加我的play_count运行时(这是坏的)。

0 个答案:

没有答案