我的任务是创建一个包含两个SQL事务的死锁。我在PgAdmin工作。该任务说:“创建两个可以交互执行的SQL事务(在注释中注解事务的交错顺序),以创建死锁并解释死锁的原因。”我收到这个错误消息: ERROR: current transaction is aborted, commands ignored until end of transaction block
SQLstate: 25P02 如果这不是死锁,你能帮我做一个吗?
我在互联网上阅读了大量关于死锁的信息,以确保我没有问一个愚蠢的问题。下表是发生死锁的地方,用作订单队列。没有实际删除的记录,只有状态更改,即正在处理、已取消、已完成。这种SELECT的含义是,它检索具有一个或多个指定状态(上面提到的“正在处理、已取消、已完成”)的第一(最早)订单。我无法想象两个这样的selects会死锁的情况。当然,UPDLOCK提示是因为代码随后会尝试更新订单的状态(将其标记为已处理,等等)。这里有一个来自SQL Server Management