我每分钟运行一个脚本,分析广播中正在播放的内容,并INSERTs
将其放入我的表格music
,其中包含字段band
,song
和{ {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运行时(这是坏的)。