From: | Volkan YAZICI <yazicivo(at)ttnet(dot)net(dot)tr> |
---|---|
To: | Erkin Tek <erkintek(at)fotograf(dot)web(dot)tr> |
Cc: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: mysql_insert_id eşdeniğ |
Date: | 2006-12-04 13:40:40 |
Message-ID: | 20061204134040.GA1356@alamut |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
Merhaba,
On Dec 01 04:30, Erkin Tek wrote:
> bir kaç fln filan buldum ama sanırım eklediğim şeyi bulmanın yolu
> pek yok, bir transaction yazmadıkca.
>...
> peki transaction içinde olmasak ta nextval işi halleder mi?
Sequence değerleri oturum başına (per session) belirlenir. Transaction
ile bir ilgisi yokdur. (Concurrency Control dışında, ki bu da sizin
isteğiniz ile alakasız.)
Kısaca örneklemek gerekirse:
BAĞLANTI-1
----------
test=# CREATE SEQUENCE tmp_seq START 1;
CREATE SEQUENCE
test=# SELECT nextval('tmp_seq');
nextval
---------
1
(1 row)
BAĞLANTI-2
----------
test=# SELECT nextval('tmp_seq');
nextval
---------
2
(1 row)
BAĞLANTI-1
----------
test=# SELECT currval('tmp_seq');
currval
---------
1
(1 row)
Görüldüğü üzere transaction falan kullanmadığım halde, farklı bir
bağlantı tarafından gerçekleştirilen nextval() çağrısı benim bağlı
olduğum oturumdaki currval() çağrısı için bir sorun yaratmadı. Başta
da dediğim gibi, sequence'lar per-session belirlenir.
Ek olarak, çift sorgu yapmak yerine 8.2 ile gelen RETURNING komutunu
da kullanabilirsiniz.
İyi çalışmalar.
From | Date | Subject | |
---|---|---|---|
Next Message | Kerem Hadimli | 2006-12-04 14:27:30 | bitstring ya da numerik tur uzerinde "bit count" alabilmek |
Previous Message | Devrim GUNDUZ | 2006-12-04 12:29:04 | Re: mysql_insert_id |