假设我有一个Customers表和一个Accounts表。每个客户最多可以有3个帐户,但不能更多。
如果客户希望INSERT
第4个帐户,它应该会失败,并且在有多个并发尝试的情况下以安全的方式执行。
如果我在SELECT
查询中使用了封闭的IF
或INSERT
,则同一查询的不同部分之间会有时间间隔,并发尝试可以成功。这可能会导致成功通过计数检查,但最终会有4个或更多帐户。
有没有办法做到这一点,而不使用锁或交易?我真的很喜欢它像UNIQUE键一样工作,当你实际上不能插入一个具有相同键的行时。