Diyelim ki bir sorgu çalıştırıyorum
begin tran
update users
set name = 'Jimmy'
where name = 'john'
Ben ise YAPMAYIN İşlem geri, hala yapılacak bu değişiklikler, bu bir hata atar olacak ya da zaten bir geri alma olarak hareket edecek?
Diyelim ki bir sorgu çalıştırıyorum
begin tran
update users
set name = 'Jimmy'
where name = 'john'
Ben ise YAPMAYIN İşlem geri, hala yapılacak bu değişiklikler, bu bir hata atar olacak ya da zaten bir geri alma olarak hareket edecek?
Yanıtlar:
Bir işlemin ne olduğunu anlamalısınız - Bu tek bir iş birimidir. TÜMÜ veya HİÇBİR ŞEY ( ASİT özelliklerini izler ) ve bu veritabanı tutarlılığını garanti eder.
İşlemi geri almazsam, bu değişiklikler yine de yapılacak mı?
Değişiklikler yalnızca taahhüt verirseniz yapılacaktır. SQL Server, işlem günlüğündeki tüm değişiklikleri kaydeder ve bir kez taahhüt ettiğinizde, veri dosyasına sertleştirilir.
Taahhüt etmezseniz, işleminiz süresiz olarak açık kalacaktır - ki içinde sys.dm_tran_active_transactions / sys.dm_tran_database_transactions / sys.dm_tran_session_transactionsveya içinde görebilirsiniz DBCC OPENTRAN.
Ayrıca, başlattığınız, açıkça bir COMMIT veya ROLLBACK deyimiyle sonlandırılması gereken açık bir işlemdir.
Ayrıca okuyun - Her zaman bir işlem oluşturmak kötü bir uygulama mı?
İşlemi taahhüt etmez veya geri almazsanız, işlem süresiz olarak devam eder. İşlemi a commitveya a yoluyla rollbackbitirene kadar veya bir DBA gelip oturumu öldürene kadar (veya ağda bir hıçkırık gibi bir şey bağlantının kesilmesine neden olana kadar) diğer oturumları engelleyerek kilitlerini tutmaya devam edecektir . Bir DBA oturumu öldürürse, bu ve diğer açık işlemler için dolaylı olarak bir geri alma işlemi gerçekleştirir.
İşlem yapılmadıkça ve yapılmadıkça, yukarıda belirtildiği gibi tümü veya hiçbiri,
Atomisite bunun arkasındaki nedendir, ACID işlem özelliklerini, bir veritabanı sisteminin takip ettiği temel özellikleri kontrol edebilirsiniz.