Bir yere tutmuyorsunuz. O işi veritabanı yapıyor.

"begin" diye bir statement yolluyorsunuz (tıpkı insert into tablo adı .... yapar gibi)
sonra bütün satırlarınızı ekliyorsunuz,
insert into fatura values ('faturano1'...)
insert into fatura values ('faturano2'...)
insert into fatura values ('faturano3'...)

yukarıdaki satırların hepsini tek tek ya da bir seferde çalıştırabilirsiniz. işiniz bittiğinde de en son "commit" komutunu yolluyorsunuz. Böylece verileriniz veritabanına kaydediliyor. Siz commit komutunu gönderene kadar diğer hiç kimse bu satırarı görmez. Diğer tablolar vs. etkilenmez. Sizin manual yapmak istediğinizi veritabanı yapmış olur.

http://www.postgresql.org/docs/9.5/static/tutorial-transactions.html

transaction kavramına göz atmanızı öneririm.


On 04/22/2016 04:36 PM, [email protected] wrote:
Merhaba Atıf Bey,
Aslında tam olarak veri bütünlüğü değil merak ettiğim? Faturaya 50 kalem detay girdiniz ama henüz faturayı kaydetmediniz. Hala da girmeye devam edeceksiniz. İşte bu girdiğiniz satırları nerede tutacağız?! Bir takas alan yazmamız gerekmez mi? Daha sonra kaydet tuşuna basınca da veritabanına, olması gereken yere yazacak?!

Neticede bu 50 kalem henüz bitmedi. Giriş devam ediyor?!...



2016-04-22 16:24 GMT+03:00 M.Atıf Ceylan <[email protected] <mailto:[email protected]>>:


    Merhaba Mucip hocam,
    Aslında veri bütünlüğü kavramı veritabanı seviyesinde ise bunu
    transaction ile sağlıyorsunuz. Commit edilmemiş bir transaction
    diğer hiçbir süreci etkilemez.

    begin transaction
    select field1 from ....
    insert into ...
    update ... where ...
    delete ....
    commit

    bu süreç zaten sonlanana kadar veri bütünlüğü bozulmaz. Client
    tarafına veri kopyalamak ve bunu kontrol etmeye çalışmak yanlış
    bir yaklaşım. Relational db'lerin sanırım tümü transaction
    desteğine sahip ve tam olarak çözdüğü şey de veri bütünlüğünü
    korumak.


    On 04/19/2016 08:36 PM, [email protected]
    <mailto:[email protected]> wrote:
    Merhabalar,
    QT-C++ ile PostgreSQL üzerinde denemeler yapıyorum. Gugıllayınca
    birşeyler görünüyor ama burada deneyimlerinizi öğrenmek istedim.

    Mesela veritabanı üzerinde bulunan kayıtlı bir faturayı
    çağırdınız. Fatura üzerinde ve detayında değişiklik yaptınız ama
    neticede kaydet tuşuna basmadınız ve bu işlemlerin takas bir
    alana yazılması ve kaydet tuşuna basıldığında asıl alanlarına
    yazılması gerekir. Mesela faturaya ek 20 kalem detay satırı
    girdi. Bu detay satırları geçizi olarak bir yere yazılmalı. Veri
    bütünlüğü de korunmalı.

    Mesela Progress ve 4GL kullanılırken kullandığınız tablo
    yapısının bir benzerini o an için geçici olarak kendi lokalinizde
    oluşturabiliyorsunuz. Ek olarak tabloda bulunan tüm triger ve
    veri bütünlüğü şartları bu takas tabloda da geçerli oluyor. Kaydı
    bu takas tabloya aktarıp orada yaptığınız her şeyi öncelikle
    takas tabloya yazıp kaydet tuşu ile asıl tabloya
    yazabiliyorsunuz. Buna benzer bir yapı PostgreSQL'de nasıl mümkün
    olabiliyor. SQLite olsa iyiydi. Zira onda doğrudan hafızaya
    veritabanını veya bir kopyasını oluşturabliyorsunuz. Peki
    PostgreSQL'de nasıl oluyor?...

-- Kolay gelsin,
    Mucip:)


    _______________________________________________
    Linux-programlama mailing list
    [email protected]
    <mailto:[email protected]>
    https://liste.linux.org.tr/mailman/listinfo/linux-programlama
    Liste kurallari:http://liste.linux.org.tr/kurallar.php

--
    M.Atıf Ceylan


    _______________________________________________
    Linux-programlama mailing list
    [email protected]
    <mailto:[email protected]>
    https://liste.linux.org.tr/mailman/listinfo/linux-programlama
    Liste kurallari: http://liste.linux.org.tr/kurallar.php




--
Kolay gelsin,
Mucip:)


_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

--

M.Atıf Ceylan

_______________________________________________
Linux-programlama mailing list
[email protected]
https://liste.linux.org.tr/mailman/listinfo/linux-programlama
Liste kurallari: http://liste.linux.org.tr/kurallar.php

Cevap