आपको किसी स्पष्ट LOCK
की आवश्यकता नहीं है गतिरोध में जाने के लिए। यहाँ केवल INSERTs के साथ शुरू से एक बहुत ही सरल डेमो है:
create table a(i int primary key);
create table b(i int primary key);
सत्र #1 करता है:
begin;
insert into a values(1);
फिर सत्र #2 करता है:
begin;
insert into b values(1);
insert into a values(1);
-- here it goes into waiting for session #1 to finish its transaction
फिर सत्र #1 करता है:
insert into b values(1);
और फिर गतिरोध उत्पन्न होता है:
साधारण UPDATEs या UPDATEs और INSERTs के संयोजन के साथ भी ऐसा ही हो सकता है। ये संचालन निहित ताले लेते हैं, और यदि वे अलग-अलग सत्रों में अलग-अलग क्रम में होते हैं, तो वे गतिरोध कर सकते हैं।