pl sql transactions commit
COMMIT, ROLLBACK ve SAVEPOINTS ifadelerinin örnekleriyle PL SQL İşlemleri hakkında bilgi edinin:
Bu yazımıza devam edeceğiz PL / SQL serisi . İçinde PL SQL Paketi öğretici, Paket, avantajları, özellikleri ve yapısı hakkında bilgi edindik.
Burada PL SQL işlemlerini ve özelliklerini inceleyeceğiz. PL SQL işlemleriyle ilgili COMMIT, ROLLBACK, SAVEPOINTS ve benzeri bazı PL / SQL ifadelerini tartışacağız.
Ayrıca PL SQL'deki LOCK TABLe ve AUTOCOMMIT komutlarını da öğreneceğiz.
Tartışmaya başlayalım !!
Ne öğreneceksin:
PL SQL İşlemleri
Birden çok SQL ifadesine sahip bir veritabanındaki çalışmanın atomik bileşenine işlem adı verilir. Atomik olarak adlandırılır çünkü SQL deyimlerinden etkilenen değişiklikler olduğunda, bunlar işlenebilir (veritabanında belirsiz güncellemeler) veya geri alınabilir (veritabanındaki güncellemeleri geri alabilir).
Bir SQL ifadesinin işlenmesi gerekir, aksi takdirde geri alınabilir ve SQL ifadesinin yapması gereken tüm değişiklikler geri alınamaz. PL / SQL programı işlemin ortasında durdurulursa, veri tabanına herhangi bir etkisi olmaz ve orijinal durumuna geri yüklenir.
COMMIT ve ROLLBACK, veritabanındaki değişikliklerin kalıcı veya geri alınmış olmasına dikkat eder. SAVEPOINT ifadesi, işlem işlemede mevcut pozisyona işaret eder.
İşlem İşlemeyi Başlat
Her işlemin bir başlangıcı ve bir fesih vardır.
Aşağıdaki olaylar, bir işlemin başladığını gösterir:
- Veritabanına bağlantı kurulduktan sonra ilk SQL ifadesi çalıştırılır.
- Yeni bir SQL ifadesi, önceki SQL ifadesi tamamlandıktan sonra yürütülür.
İşlem İşlemeyi Sonlandır
Her PL / SQL programı bir COMMIT veya ROLLBACK deyimine sahip olmalıdır. İşlemden sonra COMMIT veya ROLLBACK kullanıp kullanmamamız sadece programlama mantığına bağlıdır.
COMMIT veya ROLLBACK deyimleri kullanılmıyorsa, veritabanının son durumunun nasıl olması gerektiği ana bilgisayar ortamına bağlıdır. Örneğin, SQL * PLUS ortamında, eğer bir PL / SQL kod bloğu bir COMMIT veya ROLLBACK deyimi içermiyorsa, veritabanının durumu bundan hemen sonra yürütülen kod bloğuna bağlı olacaktır.
Bir Oracle ortamında, bir COMMIT deyimi eklersek veya bir veri tanımı veya veri kontrol sorgusu çalıştırdıktan sonra DISCONNECT, EXIT veya QUIT komutunu yürütürsek, işlem tamamlanır. Ayrıca, bir ROLLBACK ifadesi eklersek, işlem geri alınır.
Bu nedenle, aşağıdaki senaryolardan herhangi biri nedeniyle bir işlem sonlandırılabilir:
- Bir ROLLBACK veya COMMIT komutu yürütülür.
- Bir DDL sorgusu ( Örneğin, bir tablo oluşturma deyimi) yürütülür ve ardından COMMIT varsayılan olarak çalıştırılır.
- Bir DCL sorgusu ( Örneğin, GRANT deyimi) çalıştırılır ve ardından COMMIT varsayılan olarak çalıştırılır.
- Kullanıcı veritabanı bağlantısını sonlandırır.
- Kullanıcı, SQL * PLUS'tan çıkmak için EXIT deyimini çalıştırır, ardından COMMIT varsayılan olarak yürütülür.
- SQL * PLUS olağandışı bir sonlandırmayla karşılaşır, ardından ROLLBACK varsayılan olarak çalıştırılır.
- Bir DML sorgusu başarılı bir şekilde çalışmaz ve ardından veritabanını orijinal durumuna geri getirmek için varsayılan olarak ROLLBACK çalıştırılır.
Kalıcı Değişiklikler için COMMIT
COMMIT ifadesi, mevcut işlemi sonlandırabilir ve işlem tarafından gerçekleştirildiği gibi kalıcı bir değişiklik yapabilir. COMMIT yürütüldüğünde, değiştirilen veriyi alabiliriz.
COMMIT deyimi çalıştırıldığında, tablonun tüm etkilenen satırları kilitlerden serbest bırakılır. Aynı zamanda SAVEPOINT'ten kurtulmamıza yardımcı olur. Bir COMMIT deyimine isteğe bağlı olarak yalnızca kod okunabilirliğini geliştirmek için eklenen WORK deyimi (COMMIT WORK) eşlik edebilir.
COMMIT sırasında bir işlemin başarısız olması ve işlemin durumunun bilinmemesi durumunda, o sırada PL / SQL kodundaki COMMENT metni, işlemin kimliği ile birlikte bir veri sözlüğünde saklanır.
COMMIT işlemi için sözdizimi:
COMMIT;
ÖĞRETMENLER adlı bir tablo düşünelim.
ÖĞRETMENLER tablosunu aşağıda verilen SQL deyimi yardımıyla oluşturduk:
CREATE TABLE TEACHERS ( CODE INT NOT NULL, SUBJECT VARCHAR (15) NOT NULL, NAME VARCHAR (15) NOT NULL, PRIMARY KEY (CODE) );
Bu tabloya değerler girin ve ardından işlemi aşağıdaki şekilde gerçekleştirin:
INSERT INTO TEACHERS VALUES (1, 'SELENIUM', 'TOM'); INSERT INTO TEACHERS VALUES (2, 'UFT', 'SAM'); INSERT INTO TEACHERS VALUES (3, 'JMETERE', 'TONK'); COMMIT;
Ardından aşağıdaki sorgu yürütülür:
SELECT * FROM TEACHERS;
Çıktı:
Değişiklikleri Geri Almak İçin ROLLBACK
Mevcut bir işlem bir ROLLBACK ifadesiyle sonlandırılırsa, işlemde yer alması beklenen tüm değişiklikleri geri alır.
Bir ROLLBACK ifadesi, aşağıda listelendiği gibi aşağıdaki özelliklere sahiptir:
- Tablodan yanlışlıkla önemli bir satırı sildiğimiz durumda, veritabanı bir ROLLBACK ifadesiyle orijinal durumuyla geri yüklenir.
- Bir SQL ifadesinin yürütme başarısızlığına neden olan bir istisna durumunda, bir ROLLBACK ifadesi, düzeltici önlemleri alabileceğimiz programın başlangıç noktasına atlamamızı sağlar.
- COMMIT deyimi olmadan veritabanına yapılan güncellemeler bir ROLLBACK deyimi ile iptal edilebilir.
ROLLBACK işlemi için sözdizimi:
ROLLBACK;
SAVEPOINT ile ROLLBACK işlemi için sözdizimi:
ROLLBACK (TO SAVEPOINT );
Burada save_n SAVEPOINT'in adıdır.
Daha önce oluşturduğumuz ÖĞRETMENLER tablosunu ele alalım.
ROLLBACK ile kod uygulaması:
DELETE FROM TEACHERS WHERE CODE= 3; ROLLBACK;
Ardından aşağıdaki sorgu yürütülür:
SELECT * FROM TEACHERS;
Yukarıdaki kodun çıktısı şöyle olmalıdır:
Yukarıdaki kodda, öğretmenin kaydını 3'e eşit CODE ile silmesi beklenen bir DELETE deyimi uyguladık. Ancak, ROLLBACK deyimi nedeniyle veri tabanına herhangi bir etkisi yoktur ve silme işlemi yapılmaz.
Kısmi Değişiklikleri Geri Almak İçin SAVEPOINT
SAVEPOINT, mevcut işlem işleme noktasına isim ve kimlik verir. Genellikle bir ROLLBACK ifadesiyle ilişkilendirilir. İşlemin tamamına dokunmayarak işlemin bazı bölümlerini geri almamızı sağlar.
ROLLBACK'i bir SAVEPOINT'e uyguladığımızda, söz konusu SAVEPOINT'in ardından dahil edilen tüm SAVEPOINTS kaldırılır (yani, eğer ikinci KAYDETME NOKTASINA üç KAYDETME NOKTASI işaretlediysek ve bir GERİ DÖNÜŞTÜRDÜĞÜNDE üçüncü KAYIT NOKTASI otomatik olarak silinecektir.)
Bir COMMIT veya ROLLBACK ifadesi tüm SAVEPOINTS'leri siler. SAVEPOINT'e verilen adlar beyan edilmemiş tanımlayıcılardır ve bir işlem içinde birkaç kez yeniden uygulanabilir. İşlem içerisinde SAVEPOINT'in eskiden şimdiki konuma hareketi var.
Bir SAVEPOINT'e uygulanan bir ROLLBACK, işlemin yalnızca devam eden kısmını etkiler. Böylece bir SAVEPOINT, doğrulama noktalarını konumlandırarak uzun bir işlemi küçük bölümlere ayırmaya yardımcı olur.
SAVEPOINT işlemi için sözdizimi:
Windows 10'da bir jar dosyası nasıl çalıştırılır
SAVEPOINT ;
Buraya, save_n SAVEPOINT'in adıdır.
Daha önce oluşturduğumuz ÖĞRETMENLER tablosunu tekrar ele alalım.
SAVEPOINT İLE ROLLBACK'in kod uygulaması:
INSERT INTO TEACHERS VALUES (4, 'CYPRESS', 'MICHEAL'); SAVEPOINT s; INSERT INTO TEACHERS VALUES (5, 'PYTHON', 'STEVE'); INSERT INTO TEACHERS VALUES (6, 'PYTEST', 'ARNOLD'); ROLLBACK TO s; INSERT INTO TEACHERS VALUES (7, 'PROTRACTOR', 'FANNY'); COMMIT;
Ardından aşağıdaki sorgu yürütülür:
SELECT * FROM TEACHERS;
Yukarıdaki kodun çıktısı şöyle olmalıdır:
Yukarıdaki kodda, SAVEPOINT ile ROLLBACK'ten sonra s uygulandığında, yalnızca iki satır daha eklendi, yani sırasıyla CODE 4 ve 7'ye sahip öğretmenler. Tablo oluşturma sırasında 1, 2 ve 3 kodlu öğretmenlerin eklendiğini lütfen unutmayın.
PL / SQL'de KİLİT Tablo
PL / SQL'deki LOCK deyimi, tüm veritabanının kilitleme modunda kilitlenmesini sağlar. Bu, tabloya erişimi paylaşmak isteyip istemediğimizi belirler.
Bir kilit tablosu örneğini ele alalım:
LOCK TABLE teachers IN ROW SHARE MODE NOWAIT;
Yukarıdaki sorgu ÖĞRETMENLER tablosunu satır paylaşma modunda kilitler. Bir satır paylaşma modu, bir tablonun eşzamanlı kullanımına izin verir. Kullanıcıların bireysel kullanım için tüm tabloyu kilitlemesine izin vermez. COMMIT veya ROLLBACK'in yürütülmesinden sonra masa kilitleri serbest bırakılır. NOWAIT anahtar sözcüğü, veritabanının bir kilidin serbest kalmasını beklemesine izin verilmediğini belirtmek için kullanılır.
Kilit modu, bir tabloya başka hangi kilitlerin uygulanabileceği sonucuna varmak için önemlidir.
PL / SQL'de bulunan bazı KİLİT modlarını tartışalım:
Sl. Hayır | KİLİT MODU | AMAÇ |
---|---|---|
1 | SATIR PAYI | Birden çok kullanıcının tabloyu aynı anda kullanmasına izin verir. Ancak, kullanıcıların özel kullanım için tüm tabloyu kilitlemesine izin verilmez. |
iki | SIRA ÖZEL | Birden çok kullanıcının tabloyu aynı anda kullanmasına izin verir. Ancak, kullanıcıların paylaşım modunda özel kullanım için tüm tabloyu kilitlemesine izin verilmez. |
3 | GÜNCELLEMEYİ PAYLAŞ | Birden çok kullanıcının tabloyu aynı anda kullanmasına izin verir. Ancak, kullanıcıların özel kullanım için tüm tabloyu kilitlemesine izin verilmez. |
4 | PAYLAŞ | Aynı anda tablo üzerinde birden fazla sorgu yürütmemize olanak tanır. Ancak, kullanıcıların kilitli tabloyu değiştirmesine izin verilmez. |
5 | SATIR ÖZEL PAYLAŞ | Tabloya salt okunur erişimi olan kullanıcılara izin verir. Paylaşım modunda masayı değiştirmelerine veya masayı kilitlemelerine izin verilmez. |
6 | ÖZEL | Yalnızca kilitli tabloda sorguların yürütülmesine izin verir. |
PL / SQL'de Otomatik İşlem Kontrolü
Bir INSERT veya DELETE ifadesi çalıştırıldığında COMMIT deyiminin varsayılan olarak çalıştırılacağı şekilde yapılandırma yapabiliriz. Bu, AUTOCOMMIT ortam değişkenini AÇIK duruma getirerek yapılır.
Sözdizimi:
SET AUTOCOMMIT ON;
Yine, AUTOCOMMIT ortam değişkenini OFF konumuna getirerek bu kapatılabilir.
Sözdizimi:
SET AUTOCOMMIT OFF;
Sıkça Sorulan Sorular ve Cevaplar
S # 1) PL SQL'deki işlem nedir?
Cevap: İşlem, atomik birim olarak çalışan bir grup SQL veri hesaplama deyimidir. Tüm işlemler, tabiatı gereği atomiktir ve bunlar taahhüt edilir veya geri alınır.
S # 2) PL SQL'de COMMIT nedir?
Cevap: Bir COMMIT deyimi, mevcut işlemle veritabanında kalıcı bir değişiklik yapmak için kullanılır. Veritabanındaki değişiklikleri kullanıcılara görünür hale getirir.
S # 3) Bir işlemi nasıl sonlandırırsınız?
Cevap: Bir işlem COMMIT veya ROLLBACK ifadesiyle açıkça sona erer. Bir DML ifadesi çalıştırıldıktan sonra da koşulsuz olarak sonlandırılabilir.
S # 4) Bir tetikleyicide taahhüt verebilir miyiz?
Cevap: Evet, yalnızca bu tetikleyici işlemin ana işleminden bağımsız olması durumunda tetikleme yapabiliriz.
S # 5) SELECT bir işlem mi?
Cevap: Evet, SELECT bir işlemin tüm özelliklerini taşıyan bir işlemdir.
S # 6) Oracle'da bir işlemi nasıl geri alabilirim?
Cevap: Oracle'da bir işlemi geri almak için bir ROLLBACK ifadesi çalıştırmamız gerekiyor. İşlem tarafından veri tabanında yapılan tüm değişiklikleri geri alır ve orijinal durumuna geri döndürülür.
Sonuç
Bu eğiticide, PL SQL İşlem yönetimi için gerekli olan PL SQL İşlemlerinin bazı temel kavramlarını ayrıntılı olarak tartıştık. Aşağıda listelenen aşağıdaki konuları ele aldık:
- İşlem.
- COMMIT'in bir işlemde kullanılması.
- Bir işlemdeki ROLLBACK nedir?
- Bir işlemde SAVEPOINT ile ROLLBACK'in kullanılması.
- KİLİT tablosu.
Önerilen Kaynaklar
- Örneklerle Yeni Başlayanlar İçin PL SQL Eğitimi | PL / SQL Nedir
- Oracle Veritabanı Uygulama Geliştirme: Oracle SQL ve PL / SQL
- PL SQL Paketi: Örneklerle Oracle PL / SQL Paketi Eğitimi
- SQL Vs MySQL Vs SQL Server Arasındaki Fark (Örneklerle)
- PL SQL Tarih Saat Biçimi: PL / SQL'de Tarih ve Saat İşlevleri
- Örneklerle PL SQL İstisna İşlemi İçin Eksiksiz Kılavuz
- SQL vs NoSQL Tam Farklılıklar ve NoSQL ve SQL Ne Zaman Kullanılacağını Bilin
- Oracle Veritabanı Eğitimi - Oracle Veritabanı Nedir?