| 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
| 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 |