Merhaba,
PlanetPostgreSQLi incelerken şu örnek gözüme
çarptı
CREATE OR REPLACE FUNCTION isrowlocked(text,text,text)
RETURNS BOOL LANGUAGE plpgsql VOLATILE STRICT AS $gsm$ DECLARE myst TEXT; BEGIN myst = 'SELECT 1 FROM '||quote_ident($1)||' WHERE ' ||quote_ident($2)||' = '||$3||' FOR UPDATE NOWAIT'; EXECUTE myst; RETURN FALSE; EXCEPTION WHEN lock_not_available THEN RETURN true; END; $gsm$; pp=# BEGIN;
pp=# UPDATE soar SET id=id WHERE id=2; pp=# SELECT
isrowlocked('soar','id',1);
isrowlocked ------------- f pp=# SELECT isrowlocked('soar','id',2); isrowlocked ------------- 1. bu kullanım şekli etik mi ? ( yani doğru kullanım şekli bu mu ? ) yukarıdaki örnekten anladığım
kadarıyla bir kilit sorgusu gönderiliyor
dönen hata yakalanarak
boolean bir sonuç elde ediliyor.
2. pg_locks view' ini kullanarak, kilitli satırın
bulunduğu veritabanının ve tablonun oid numaralarını
alabiliyorum,
pg_locks view'inde kilitlenen
satırında oid'ini görebilmek mümkünmü, eğer "row oid" eklenebilirse
böyle
manuel yollara gerek kalmayacağı
kanaatindeyim.
İyi Çalışmalar
---------------------------------------------------------------------------- Don't 'kill -9' the postmaster |