Re: Postgresql Rule ve sequence problemi

From: Emre Hasegeli <hasegeli(at)tart(dot)com(dot)tr>
To: Namık Güngör <namik(at)ofisiletisim(dot)com>
Cc: pgsql-tr-genel(at)postgresql(dot)org, linux-programlama(at)liste(dot)linux(dot)org(dot)tr
Subject: Re: Postgresql Rule ve sequence problemi
Date: 2011-05-07 12:21:57
Message-ID: BANLkTimEzC2hFzK6iDfh0yOrTF6NHe7oBw@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

2011/5/6 Namık Güngör <namik(at)ofisiletisim(dot)com>

> CREATE TABLE db (a serial PRIMARY KEY, b TEXT);
>
>
>
> CREATE TABLE db_log (a integer , b TEXT);
>
>
>
> CREATE OR REPLACE RULE db_log_insert AS
>
> ON INSERT TO db DO INSERT INTO db_log (a,b)
>
> VALUES (new.a, new.b);
>
>
>
> INSERT INTO db (b)
>
> VALUES ('deneme');
>
>
>
> INSERT INTO db (b)
>
> VALUES ('deneme1');
>
>
>
> INSERT INTO db (b)
>
> VALUES ('deneme2');
>
>
>
> select * from db
>
> 1;"deneme"
>
> 3;"deneme1"
>
> 5;"deneme2"
>
>
>
> Select * from db_log
>
> 2;"deneme"
>
> 4;"deneme1"
>
> 6;"deneme2"
>
>
>
> Merhaba. Yukarıdaki örnekte olduğu gibi bütün tablolarım için bir log
> tablosu tutuyorum.
>
> Fakat insert için rule tanımladıktan sonra “db” tablosundaki serial key
> tanımlı alan ikişer ikişer artmaya başlıyor.
>
> Aynı zamanda db_log tablosundaki a alanı db tablosundaki a alanının 1
> fazlası oluyor.
>
> Aynı tablolarda update ve delete için de rule lar var. Bunlarda bir problem
> olmadan düzgün değerleri alıyorum. Fakat insert için böyle bir sorun var.
>
> Nerede yanlış yapıyorum?
>
>
>

Alter table "db"
alter column "a"
set default currval('db_a_seq'::regclass);

Create or replace rule "db_log_insert" as
on insert to "db" do (insert into "db_log" values (new.a, new.b);
select nextval('db_a_seq'::regclass));

Yukarıdaki tablonun öntanımlı (default) değerini artan değerin (sequence) en
son değeri olarak belirleyip, artan değeri kuralın (rule) içinde arttırarak
sorunun yanından dolaşabilirsiniz. Ancak bu yöntem tabloya birden çok satır
eklemek istediğinizde sorun çıkaracaktır.

--
Emre Hasegeli
Database Administrator
Tart NewMedia

In response to

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Namık Güngör 2011-05-11 14:40:29 Postgresql elektirik kesintisi
Previous Message Namık Güngör 2011-05-06 10:35:01 Postgresql Rule ve sequence problemi