我根据条件在两个不同的表中插入一行。
比方说,我们有一个表stories
,其中有 2 个字段正在考虑中:
( story_id and comments_count
)
和其他 2 个表:
regcomments (comment_id, story_id, comment_text)
unregcomments (comment_id, story_id, comment_text)
现在,在为 any 插入任何新评论之前story_id
,我只想检查是否comments_count
小于 100。如果是,则应将行插入regcomments
,否则,应将行插入unregcomments
。
这是我如何做到这一点的伪代码:
select comments_count from stories where story_id = x
if comment_count<100
insert into regcomments
else
insert into unregcomments
现在我所关心的是如果多个用户正在访问这个脚本,这有没有可能失败?例如,一个故事有 99 条评论。2 个用户同时调用该函数。第一个选择查询同时对两者执行,它们都得到 99。所以两个插入都将被写入 regcomments,使 regcomments 计数为 101,这违反了我的业务规则。任何人都有任何想法,事情如何发展。或者关于我应该如何处理这种情况的任何想法。(不要问我为什么要使用 2 张桌子:P)