Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird - İçinde veri olan bir alanın tipini değiştirme
#1
Merhabalar,
IBExpert ile Firebird veritabanı kullanarak bir tablo oluşturdum. Fakat bu tabloda sayısal olması gereken bir alanı yanlışlıkla Varchar yapmıştım. Şimdi ise bu tablo içerisindeki verileri silmeden field tipini değiştirmek istiyorum. Bu mümkün müdür?
İyi çalışmalar.
Cevapla
#2
(07-06-2020, Saat: 13:08)habikus Adlı Kullanıcıdan Alıntı: Merhabalar,
IBExpert ile Firebird veritabanı kullanarak bir tablo oluşturdum. Fakat bu tabloda sayısal olması gereken bir alanı yanlışlıkla Varchar yapmıştım. Şimdi ise bu tablo içerisindeki verileri silmeden field tipini değiştirmek istiyorum. Bu mümkün müdür?
İyi çalışmalar.

Merhabalar,

Öncelikle yedeğinizi alın.
FB hiç kullanmadığım için bir kaç önerim olacak.

1. Yeni bir field ekleyin. (Sayısal alan). Eski field verilerini buraya kopyalayın.
    Sorunları görüp ona göre hareket edin.

2. Eğer Varchar alan içerisinde noktalama işaretleri kayıtlı değil ise (. veya , )
    Alter komutu ile alanın tipini değiştirebilirsiniz.
ALTER TABLE TABLOADINIZ ALTER COLUMN KOLONADINIZ TYPE integer

Umarım faydalı olur.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
@hi_selamlar çok güzel bir öneri ile taçlandırmış.

Şöyle bir kötü haberim var ama siz yine de yedek alıp denemenizi yapın. 

Bu linkte hangi veri tiplerinin hangi(leri)ne dönüşebildiği tablosu verilmiş. Aman ha mevcut fieldi @hi_selamlar dediği gibi yeni bir sayısal alana aktarmadan denemeyin. 

Yanılma payını hesaba katıp deneyiminizi burada paylaşırsanız hepimize faydalı olacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#4
Yardımlarınız doğrultusunda, aşağıda olduğu gibi yeni bir alan oluşturdum verileri o alana aktardım. 
Allah razı olsun.

// 1.ADIM : YENİ BİR ALAN OLUŞTUR  
 try   
 sqltext:='Alter Table IRSALIYE add '+'YENI_ALAN'+' DOUBLE PRECISION';
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text :=sqltext;
 FDQuery2.ExecSQL;      
 except  
 end; 
 
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text:='select * from IRSALIYE';   
 FDQuery2.Active:=TRUE;
 
 // 2.ADIM : BÜTÜTÜN VERİLERİ ESKİ ALANDAN YENİŞ ALANA AKTAR
 FDQuery2.Open;
 FDQuery2.FIRST;
 WHILE NOT FDQuery2.EOF DO
       BEGIN
       FDQuery2.Edit;
       FDQuery2.FieldByName('YENI_ALAN').AsString:=FDQuery2.FieldByName('EVRAKNO').AsString;
       FDQuery2.Post;            
       FDQuery2.Next;
       END;
       
 // 3.ADIM : ESKİ ALANI SİL
 try   
 sqltext:='Alter Table IRSALIYE Drop EVRAKNO';         
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text :=sqltext;
 FDQuery2.ExecSQL;      
 except  
 end; 
 
 // 4.ADIM : YENİ ALANIN ADINI ESKİ ALANI ADIYLA DEĞİŞTİR
 try   
 sqltext:='Alter Table IRSALIYE Alter Column YENI_ALAN to EVRAKNO';        
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text :=sqltext;
 FDQuery2.ExecSQL;      
 except  
 end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Combobox veri kaydetme Gumiho309 11 535 15-10-2020, Saat: 11:44
Son Yorum: wiseman
  Seçilen Veri Tabanına Göre Bağlantı Sağlanması bnyamin86 2 262 30-09-2020, Saat: 10:15
Son Yorum: bnyamin86
  delphide kilitli kullanıcı kurtarma şifre değiştirme Ekvador 1 299 03-09-2020, Saat: 14:44
Son Yorum: pro_imaj
  Form içinde Generics Sınıfı Nasıl Kullanırım 3ddark 3 524 21-08-2020, Saat: 15:12
Son Yorum: ismailkocacan
  Uygulama içinde FB DB bakımı mcuyan 3 426 14-08-2020, Saat: 20:11
Son Yorum: mcuyan



Konuyu Okuyanlar: 1 Ziyaretçi