Re: auto increment

From: "Esref Atak" <esrefatak(at)gmail(dot)com>
To: pgsql-tr-genel(at)postgresql(dot)org
Subject: Re: auto increment
Date: 2006-02-28 01:19:51
Message-ID: b0e445b30602271719g39fedc89gc9989047c825a251@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

On 2/28/06, Devrim GUNDUZ <devrim(at)commandprompt(dot)com> wrote:
>
> Merhaba,

Merhaba mesai arkadaşlarım (sabahın bu saatinde) :)

On Tue, 2006-02-28 at 02:51 +0200, Mehmet Uysal wrote:

> increment özelliği postgresql de biraz değişik galiba, başka bir yolu
>
> varmı bilmiyorum ama ben sequence oluşturarak yaptım. burada problem
>

Alanın türünü serial yapabilisiniz. İşiniz biraz daha kolaylaşabilir.

> oluşturdugum sequence de max min ve artış değerlerini belirttim ancak
> > bunu birkaç tabloda kullandığımda artan ID ler , mesela kullanıcı
> > tablosunda en son 20 eklendi , sonra mesaj tablosuna yeni veri
> > eklendiğinde mesaj id si 21 oluyor ve tekrar kullaniciya veri
> > eklendiğinde kullanicidaki ID 21 i atlayarak 22 ye yani sequence in
> > kaldıgı yerden devam ediyor.

Bir arttırıcının, kaldığı yerden devam etmesi en temel kuraldır. Öyle ki;
aynı transaction içerisindeyken, transaction geri sarılsa bile, arttırıcılar
en son hangi değeri almışlarsa, oradan arttırmaya devam ederler.

Evet bu durumdaki davranışı doğru. Hepsi için tek sequence
> kullanıyorsunuz çünkü.
>
> > şimdi bu kullanımda herhangi bir problem yaşanırmı onu sormak
> > istiyorum veya her tablo için sequence mi oluşturmam daha mantıklı
> > olur. bunların dışında başka bir çözüm yolu var mı?
>
> Sequence mantığına ters bir durum var bence burada. Kişisel düşüncem her
> tabloya ayrı bir seq tanımlamanız.

Her tablo için aynı arttırıcı tanımlama yöntemi, kesinlikle bir tercih
meselesidir. Yöntemi seçme konusunda belirleyici unsurlar şunlar olabilir:

+ Değerin kaç olduğu sizin için önemli mi? Örneğin: bu numarayı insanlara
söyleyecek misiniz? Mesela bir başvuru numarası mı? Mesela, banka
kuyruklarındaki gibi bir numara sistemini hayal edin. Eğer öyle ise, ardışık
şekilde artması sizin için önemli olacağından, söz konusu tablo için tek
arttırıcı kullanmanız mantıklı olabilir.
+ Değer, çok mu kısıtlı? Örneğin: yalnızca 2 haneden mi oluşuyor? Eğer böyle
ise ve değerin kaydedileceği alanı yalnızca 2 hane kabul edecek şekilde
ayarladıysanız, ortak kullanılan bir arttırıcıdan değer almanız sıkıntılı
olabilir. Zira; aşırı yüksek bir değer dönebilir.

Bu gibi durumların dışında,

create table ogrenciler (ogrenciId bigint);
create table ogretmenler (ogretmenId bigint);

gibi her tablo için ayrı arttırıcı kullanmanın, pratikte hiçbir faydası yok.
Aksine, eğer çok sayıda tablonuz varsa, her tablo için ayrıca bir de
arttırıcı ile uğraşmak, canınızı sıkabilir.

Saygılar.
> --
> The PostgreSQL Company - Command Prompt, Inc. 1.503.667.4564
> PostgreSQL Replication, Consulting, Custom Development, 24x7 support
> Managed Services, Shared and Dedicated Hosting
> Co-Authors: PL/php, plPerlNG - http://www.commandprompt.com/
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org
>

--
Saygılar,
Eşref Atak

In response to

Responses

Browse pgsql-tr-genel by date

  From Date Subject
Next Message acemi nix 2006-02-28 08:40:43 oid hakkında
Previous Message Devrim GUNDUZ 2006-02-28 01:01:51 Re: auto increment