方案1:SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSACTION; IF EXISTS (SELECT 1 FROM dbo.table WHERE PK = @PK) BEGIN UPDATE ... END ELSE BEGIN INSERT ... END COMMIT TRANSACTION; 方案2: SET TRANSACTION ISOLATION LEVEL SERIALIZABLE; BEGIN TRANSA…
最近对insert的锁操作比较费解,所以自己动手,一看究竟.主要是通过一下三个sql来看一下执行中的sql的到底使用了什么锁. select * from information_schema.INNODB_TRX\G; //记录当前正在执行的事务,以及事务的一些状态 select * from information_schema.INNODB_LOCKS\G; //包含了InnoDB事务锁的具体情况,包括事务正在申请加的锁和事务加上的锁. select * from information_…