Re: mysql_insert_id eşdeniğ

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.

In response to

Browse pgsql-tr-genel by date

  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