merhaba.
mutlaka daha önce bahsi geçmiştir ama ben eski kayıtlarda bulamadım
(doğru kelimeleri bulamadım
bir master tablom var
ve buna bağlı 3 adet detay tablosu.
master tablodaki ve detay tablolardaki kayıtları yeni bir masterid ile kopyalamam gerek.
yani yeni bir masterid ama tüm alanlar aynı.
delphi içinden biraz uğraştım ama acemiliğim yüzünden çook uzun kodlar oluştu.
aslında yapmak istediğim
insert into mastertablo (masterid,alan1 alan2 alan3)
values (yenimasterid,(select alan1,alan2,alan3 from mastertablo where masterid=3)
gibi birşey yapmam lazım ama doğru yazımı bir türlü bulamadım.
delphi tarafında kolaybir yol varsa o öneriyi de dikkate alabilirim.
firebird&normal bde bileşenleri kullanılmış..
teşekkürler.
sql kopyalama.
Merhaba,
gibi bir kodla istediğini yapabilirsin, tabi yeni kayıtlar için masterid'yi gelirtmen lazım, benim örneğimde id generator ile yeni değerler veriliyor.
NOT: Bende Firebird 1.5.2.4731 kurulu, yukarıdaki sql cümlesine koşul koymadan çalışıtırınca veritabanı çöktü. Sen yinede bir yedek alm denemeden.
Kod: Tümünü seç
insert into test(id,adsoyad)
select gen_id(gen_test_id,1),adsoyad from test where id = 3;
NOT: Bende Firebird 1.5.2.4731 kurulu, yukarıdaki sql cümlesine koşul koymadan çalışıtırınca veritabanı çöktü. Sen yinede bir yedek alm denemeden.
yazdığınız tarzda bir kodun işimi göreceğini düşünüyorum.
bu yapıyla ilgili biraz araştırma yapmam gerek.
ayrıca dediğiniz gibi benzer bir kodu çalıştırdığımda
veritabanının boyutu 90 mb dan 540 mb a çıktı.
belki delphi tarafında işi çözmeye çalışsam daha iyi olacak.
iyi ve kolay bir algoritma oluşturursam kodları atarım.
teşekkürler.
bu yapıyla ilgili biraz araştırma yapmam gerek.
ayrıca dediğiniz gibi benzer bir kodu çalıştırdığımda
veritabanının boyutu 90 mb dan 540 mb a çıktı.
belki delphi tarafında işi çözmeye çalışsam daha iyi olacak.
iyi ve kolay bir algoritma oluşturursam kodları atarım.
teşekkürler.
Merhaba,
aslında verdiğim örnekte koşul belirtince sorun çıkmıyor, örneğin
sql cümleciğini çalıştırdığımızda id alanı 3 olan tek kayıt tablonun sonuna yeni id ile ekleniyor, ama
gibi bir satır ise kısır döngüye giriyor.
Nedenini bilen arkadaşlar cevap yazarsa sevinirim, çok merak ettim çünkü.
(Firebird'den kaynaklanan bir sorun gibi geldi bana)
aslında verdiğim örnekte koşul belirtince sorun çıkmıyor, örneğin
Kod: Tümünü seç
insert into test(id,adsoyad)
select gen_id(gen_test_id,1),adsoyad from test where id = 3;
Kod: Tümünü seç
insert into test(id,adsoyad)
select gen_id(gen_test_id,1),adsoyad from test;
Nedenini bilen arkadaşlar cevap yazarsa sevinirim, çok merak ettim çünkü.
(Firebird'den kaynaklanan bir sorun gibi geldi bana)