Junior — Middle
Verilənlər bazaları ilə işləyərkən iç-içə tranzaksiyalar təcrübəniz olubmu?
sobes.tech Süni İntellekt
AI-dan cavab
İç içə tranzaksiyalar, bir tranzaksiya daxilində başqa bir tranzaksiyanı başlatmaq imkanıdır və bu, müstəqil olaraq təsdiqlənə və ya ləğv edilə bilər. Əksər verilənlər bazası idarəetmə sistemləri (DBMS) birbaşa iç içə tranzaksiyaları dəstəkləmir, lakin savepoints (qoruma nöqtələri) istifadə edilə bilər.
Go dilində, database/sql paketindən istifadə edərək, verilənlər bazası ilə işləyərkən, iç içə tranzaksiyaları simulyasiya etmək üçün savepoints istifadə oluna bilər:
// Əsas tranzaksiyanı başlat
trx, err := db.Begin()
if err != nil {
// xəta ilə işləmə
}
// Savepoint yaradın
_, err = trx.Exec("SAVEPOINT sp1")
if err != nil {
// xəta ilə işləmə
}
// Əməliyyatları yerinə yetirin
// ...
// Xəta baş verərsə, savepoint-ə qayıdın
_, err = trx.Exec("ROLLBACK TO SAVEPOINT sp1")
// Sonda, əsas tranzaksiyanı təsdiqləyin
err = trx.Commit()
Bu şəkildə, tranzaksiyanın hissələrini idarə edə bilərsiniz, bütün əməliyyatı ləğv etmədən.