1

我试图弄清楚在对重复键 使用更新时插入值的顺序是否影响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 锁定键。

4

0 回答 0