Esta é uma pergunta humilde feita no espírito de aumentar meu conhecimento; por favor, seja gentil em sua resposta.
Como desenvolvedor de aplicativos de longa data, sei em algum nível o que é uma transação (eu os uso o tempo todo). Deixando de lado os níveis de isolamento da transação no momento, em um nível alto, uma transação permite que um bloco de trabalho seja totalmente concluído ou não seja concluído e permite uma certa quantidade de isolamento de outras atividades de modificação do banco de dados.
Eu também sei o que (em vários bancos de dados) é um bloqueio, ou pelo menos como um se comporta (se eu bloquear uma tabela de alguma forma explicitamente, nenhum outro processo ou encadeamento poderá atualizar nada sobre essa tabela).
O que não estou claramente claro é: em vários bancos de dados, quando bloqueio explicitamente uma linha ou tabela, estou empregando exatamente as mesmas construções usadas pelas instalações de transação do banco de dados nos bastidores para fazer a transação funcionar corretamente?
Ou seja, me ocorre que para uma transação ser atômica e isolada, ela deve estar fazendo algum locking. Esse bloqueio iniciado por transação e oculto por transação é o mesmo tipo de bloqueio que vários bancos de dados me permitem acessar por meio de construções como ou comandos SELECT FOR UPDATE
explícitos ? LOCK
Ou esses dois conceitos são completamente diferentes?
Mais uma vez, peço desculpas pela ingenuidade desta pergunta; Fico feliz em ser apontado para fontes mais fundamentais.