我试图弄清楚在对重复键 使用更新时插入值的顺序是否影响Seq_in_index,我有一个我正在尝试调试的死锁。
所以例如我们有
一个视图表,它为每个视图获取一个插入,并为插入、更新和删除设置了触发器,影响其他 5 个表
受触发器影响的表之一的索引如下
+--------+------------+----------+--------------+-------------+------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Index_type |
+--------+------------+----------+--------------+-------------+------------+
| tableA | 0 | PRIMARY | 1 | field1 | BTREE |
| tableA | 0 | PRIMARY | 2 | field2 | BTREE |
+--------+------------+----------+--------------+-------------+------------+
现在我要问的是插入触发器是否像这样运行
insert into tableA (field1, field2) vals (...) on duplicate key update ...
并且更新触发器在翻转字段顺序的同时运行
insert into tableA (field2,field1) vals (...) on duplicate key update ...
这会导致像死锁一样
connection 1: locks key(1), locks key(2);
connection 2: locks key(2), locks key(1);
还是不管字段顺序如何,它都会通过 Seq_in_index 锁定键。