如果行数超过限制,如何使INSERT失败,并发安全?

时间:2017-08-25 07:58:19

标签: mysql concurrency

假设我有一个Customers表和一个Accounts表。每个客户最多可以有3个帐户,但不能更多。

如果客户希望INSERT第4个帐户,它应该会失败,并且在有多个并发尝试的情况下以安全的方式执行。

如果我在SELECT查询中使用了封闭的IFINSERT,则同一查询的不同部分之间会有时间间隔,并发尝试可以成功。这可能会导致成功通过计数检查,但最终会有4个或更多帐户。

有没有办法做到这一点,而不使用锁或交易?我真的很喜欢它像UNIQUE键一样工作,当你实际上不能插入一个具有相同键的行时。

0 个答案:

没有答案