我有一个表“用户”,其中包括“电子邮件”和“用户名”列。我想确保在创建帐户时,不存在具有相同用户名或电子邮件的帐户(行)。目前,该程序只检查电子邮件或用户名的行数是否相同,如果计数为零,则插入包含电子邮件和用户名的行。
但是,这是两个独立的查询,并且由于这是一个多线程 Web 应用程序,它引入了竞争条件的可能性,导致两个帐户具有相同的用户名,在尝试登录时都会导致问题。
所以,我的问题是:有没有办法在单个 SQL 查询中,仅在没有类似行的情况下插入一行(即使用相同的用户名)?
对于那些想知道的人,我在 ruby 中使用 Sequel gem。