I. Melock record Untuk menghindari tabrakan (crash) update/delete Oleh dua User atau lebih
pada waktu yg bersamaan :
Pada kasus berikut, misalkan user A akan melakukan update terhadap tabel "tmp.my_locking" dengan "filter tbl_id = 1".
Sementara pada waktu yg bersamaan, user B juga akan melakukan update atau delete terhadap data yg sama.
Agar tidak terjadi "crash"
User A:
-------
begin;
select * from tmp.my_locking where tbl_id =1 for update;
update tmp.my_locking set kode="update user oleh A" where tbl_id =1;
...
...
commit;
User B:
-------
update tmp.my_locking set kode="update user oleh B" where tbl_id =1;
Maka yg terjadi adalah, user B akan ter "LOCK" selama user A belum menjalankan "Commit".
Setelah user A commit, baru selanjutnya perintah query user B di eksekusi.
II. Melock record Untuk menghindari update/delete Oleh User lain
pada saat salah satu user sedang mengakses record :
Pada kasus berikut, misalkan user A melihat data tabel "tmp.my_locking", misalkan berupa repot .
Sementara pada waktu yg bersamaan, user B juga akan melakukan update atau delete terhadap salah satu data atau lebih
yg merupakan data yg sedang di lihat oleh user A.
User A:
-------
begin;
select * from tmp.my_locking lock in share mode;
...
...
commit;
User B:
-------
delete from tmp.my_locking where tbl_id =14;
Maka yg terjadi adalah, user B akan ter "LOCK" selama user A belum menjalankan "Commit".
Setelah user A commit, baru selanjutnya perintah query user B di eksekusi.