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