sql kopyalama.

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
graganda
Üye
Mesajlar: 5
Kayıt: 13 Nis 2005 04:22

sql kopyalama.

Mesaj gönderen graganda »

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.
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,

Kod: Tümünü seç

insert into test(id,adsoyad)
  select gen_id(gen_test_id,1),adsoyad from test where id = 3;
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.
graganda
Üye
Mesajlar: 5
Kayıt: 13 Nis 2005 04:22

Mesaj gönderen graganda »

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.
t-hex
Kıdemli Üye
Mesajlar: 531
Kayıt: 18 Mar 2005 02:45
Konum: İstanbul/Antalya
İletişim:

Mesaj gönderen t-hex »

Merhaba,
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; 
sql cümleciğini çalıştırdığımızda id alanı 3 olan tek kayıt tablonun sonuna yeni id ile ekleniyor, ama

Kod: Tümünü seç

insert into test(id,adsoyad)
  select gen_id(gen_test_id,1),adsoyad from test;
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)
Cevapla