死锁例子

来源:百度知道 编辑:UC知道 时间:2024/06/28 19:59:25
详细的问题说明,有助于回答者给出准确的答案

三个鸡蛋和三份面粉做成一块蛋糕。现在总共有三个鸡蛋和三份面粉,甲现在有其中的三个鸡蛋,乙现在有其中的三份面粉,两个都需要对方的东西,但都不肯放手,这就产生了死锁。

每当两个或两个以上用户正在等候已由这两个或两个以上用户之一所锁定的数据上的锁时就发生死锁错误。
1. Malka通过将雇员20的名改成Jones来更新EMP表:
SQL>UPDATE emp SET last_name='Jones'
WHERE id=20;
2.接着,Jennifer通过将雇员25的薪水改成50000美元来更新EMP表:
SQL>UPDATE emp SET salary=50000
WHERE id=25;
3. Malka通过将雇员25的名改成Smith来更新该雇员。此时Malka被排在Jennifer在同一行上的锁后面等候着, 因此Malka的会话悬挂起来:
SQL>UPDATE emp SET last_name='Smith'
WHERE id=25;
4. 现在,Jennifer开始更新雇员20(Malka在第一步中锁定的那行),并试图把他的薪水改成60000美元:
SQL>UPDATE emp SET salary=60000
WHERE id=20;