鉴于:
customer[id BIGINT AUTO_INCREMENT PRIMARY KEY, email VARCHAR(30), count INT]
我想自动执行以下操作:如果客户已经存在,则更新客户;否则,插入一个新客户。
从理论上讲,这听起来非常适合SQL-MERGE,但我使用的数据库不支持MERGE with AUTO_INCREMENT columns。
https://stackoverflow.com/a/1727788/14731似乎表明,如果您对不存在的行执行查询或更新语句,数据库将锁定索引,从而防止并发插入。
SQL 标准是否保证这种行为?是否有任何数据库不以这种方式运行?
更新:对不起,我应该在前面提到这一点:解决方案必须使用 READ_COMMITTED 事务隔离,除非这是不可能的,在这种情况下我将接受使用 SERIALIZABLE。