Re: [pgsql-tr-genel] PostgreSQL hakkında yardım lütfen

From: Erhan Ekici <erhan(dot)ekici(at)gmail(dot)com>
To: Devrim GÜNDÜZ <devrim(at)gunduz(dot)org>
Cc: Salim SAKAL <salim(dot)sakal(at)gmail(dot)com>, pgsql-tr-genel(at)postgresql(dot)org
Subject: Re: [pgsql-tr-genel] PostgreSQL hakkında yardım lütfen
Date: 2010-09-06 20:21:04
Message-ID: AANLkTi==WgrN2VX=zK=tiVaBEjLy2gOZHXVmCv+gA3pT@mail.gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-tr-genel

Merhabalar,

Devrim'in yazdıklarına ek olarak :

Transaction için PHP de yapmanız gereken ekstra bir şey yok. Nasıl normal
SQL işlemlerinde -transactionı baslatırsınız, değişikliği yaparsınız, sonra
commit ederseniz- yapıyorsanız benzeri olacak. Sadece query sonucunu kontrol
edip ona göre sunucuya ROLLBACK yada COMMIT göndereceksiniz. (Tabi herhangi
bir insert update vs den önce bir query ile BEGIN gönderin)

Copy & Paste ile oluşturulmuş bir örneği aşağıda bulabilirsiniz. Tek INSERT
lik bir ifade var siz oraya tek transactionda yapmak istediğniz tüm
değişiklikleri vs yazabilirsiniz.

<?php

$conn = pg_connect("host=yourhost port=5432 dbname=yourdbname
user=yourusername password=yourpassword");

$result = pg_query($conn, "BEGIN");

$result = pg_query($conn, "INSERT INTO yourtable VALUES ('v1', 'v2',
'v3')");

$cmdtuples = pg_affected_rows($result);

if (!$result || $cmdtuples < 1 ) {
$feedback .= pg_last_error($conn);
$feedback .= ' Error - couldn\'t insert new row ';
pg_query($conn, "ROLLBACK");
return false;
} else {
//commit this transaction
pg_query($conn, "COMMIT");
return true;
}

?>

iyi calismalar,
Erhan Ekici

2010/9/6 Devrim GÜNDÜZ <devrim(at)gunduz(dot)org>

> On Mon, 2010-09-06 at 22:35 +0300, Salim SAKAL wrote:
> <kesildi>
> > örnek: insert query'de bağlantı hatası olursa rollback, sorun yoksa
> > commit...
>
> Ben sorunuzu anlamadım: Bir PHP satırında connection kısmı başarısız
> olursa tabii ki rollback olacaktır. Bir de özel olarak bir transaction
> başlatmadığınızda PostgreSQL o işlemi commit eder (başarılı olursa
> yani). İkinci ifadede ayrı bir transaction başlar.
>
> Örnek:
>
> BEGIN;
> INSERT...
> INSERT...
> COMMIT;
>
> ile
>
> INSERT...
> INSERT
>
> farklıdır. İlkinde 1 tx, ikincisinde 2 tx vardır. O yüzden bulk insert
> işlemlerinde tek tx kullanmak gerekir.
>
> Bilmem yardımcı oldu mu bu yanıt?
>
> > Şahsi kanaatimce açık kaynağın önündeki ciddi engellerden birisi de bu
> > konu. MSSQL Server için aramış olsaydım binlerce döküman bulabilirdim.
> > Oracle'a rakip PostgreSQL gibi özgür yazılım var ama döküman olmadığı
> > için yaygınlaşmıyor.
>
> Ben bu tarzı pek sevmiyorum. Üstteki sorunuzun yanıtı PostgreSQL'in 2500
> sayfalık belgesinin içinde var örneğin.
>
> Saygılar,
> --
> Devrim GÜNDÜZ
> PostgreSQL Danışmanı/Consultant, Red Hat Certified Engineer
> PostgreSQL RPM Repository: http://yum.pgrpms.org
> Community: devrim~PostgreSQL.org, devrim.gunduz~linux.org.tr
> http://www.gunduz.org Twitter: http://twitter.com/devrimgunduz
>

In response to

Browse pgsql-tr-genel by date

  From Date Subject
Next Message Emre Hasegeli 2010-09-06 20:39:53 PHP PostgreSQL Transaction Kullanımı
Previous Message Devrim GÜNDÜZ 2010-09-06 19:43:53 Re: PostgreSQL hakkında yardım lütfen