From: | Timu EREN <selamtux(at)gmail(dot)com> |
---|---|
To: | pgsql-tr-genel(at)postgresql(dot)org |
Subject: | Re: tekil olmayan kolona tekil anahtar eklesek? |
Date: | 2006-11-15 19:45:59 |
Message-ID: | 200611152146.01984.selamtux@gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-tr-genel |
Çarşamba 15 Kasım 2006 11:51 tarihinde, Erkin Tek şunları yazmıştı:
> Selam,
>
> Bir tabloma tekil anahtar eklememiş, dolayısiyle, aynı anahtara sahip
> girdiler var, fakat (direkt tembelliğimden) tekrar girmek istemiyorum.
> 1. seçeneğim 3 tane olan kayıttan ikisini silmek
> delete from arac where at_id=3 limit 2; işe yaramadı
> 2. seçenek at_id'leri birer birer arttırmak ki
> update arac set at_id=rownum
> oracle sql'inde rownum vardı, bir deneme olarak yaptım, olmadı
>
> bilemedim, arada başıma geliyor, bu kolonu (at_id) nasıl otomatik
> arttırabilirim ki? Tek amaç bunun tekil anahtar olması, her türlü yol mübah
> olarak bakıyorum (e tabi belli kriterler içinde :P )
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
İlk önce bir SEQUENCE oluşturalım.
CREATE SEQUENCE tabloadi_at_idx;
Ardından bir fonksiyon yazıp tüm tabloyu bir seferde alıp loop içerisinde
id'leri düzenleyelim.
CREATE OR REPLACE FUNCTION id_duzenle() RETURNS VOID AS $$
DECLARE
v_rec RECORD;
BEGIN
FOR v_rec IN SELECT * FROM tabloadi LOOP
UPDATE tabloadi SET at_id=nextval('tabloadi_at_idx') WHERE
kolon1=v_rec.kolon1 AND kolon2=v_rec.kolon2;
END LOOP;
RETURN ;
END
$$
LANGUAGE plpgsql;
id'lerin otomatik atanması için varsayılan değeri SEQUENCE'den alalım.
ALTER TABLE tabloadi ALTER COLUMN at_id SET DEFAULT
nextval('tabloadi_at_idx');
fonksiyonu çalıştıralım.
SELECT id_duzenle();
Artık bu fonksiyone gerek kalmadı silelim
DROP FUNCTION id_duzenle();
bu arada bu yönetimin düzgün olabilmesi için bu sırada bu tablo için her hangi
bir işlemin yapılmaması gerekebilir. (işlem sırasında yapılacak insert
işlemleri seq sırasını bozabilir.)
Not: söz dizim hataları olabilir denemedim.
--
Saygılar && İyi çalışmalar
Timu EREN (a.k.a selam)
From | Date | Subject | |
---|---|---|---|
Next Message | Erkin Tek | 2006-11-16 06:30:46 | Fwd: Re: tekil olmayan kolona tekil anahtar eklesek? |
Previous Message | Erkin Tek | 2006-11-15 09:51:41 | tekil olmayan kolona tekil anahtar eklesek? |