From: | "Ahmet" <corsairsoft(at)gmail(dot)com> |
---|---|
To: | <pgsql-general(at)postgresql(dot)org> |
Subject: | Postgresql Kilitli Satır Kontrolü |
Date: | 2007-02-19 20:39:07 |
Message-ID: | 003a01c75466$07cd7050$0301a8c0@asus |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Merhaba,
PlanetPostgreSQLi incelerken şu örnek gözüme çarptı
Greg Sabino Mullane
Determining which rows in a table are locked
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
From | Date | Subject | |
---|---|---|---|
Next Message | Devrim GUNDUZ | 2007-02-19 21:24:08 | Re: RPM compat-postgresql-libs-4-2 for IA-64 |
Previous Message | David Primero Segundo | 2007-02-19 20:09:09 | Re: [pgsql-es-ayuda] postgreSQL |