tablonun primary key'ini değiştirmem gerekli

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
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

tablonun primary key'ini değiştirmem gerekli

Mesaj gönderen akdatilla »

merhaba arkadaşlar
Benim yeni ve halen üzerinde çalıştığım bir projem var. Bazen tablolar üzerinde değişiklik yapmam gerekiyor.
İndexi olmayan alanların eklenmesi/çıkartılmasını,ibexpert veya alter table komutları ile yapabiliyorum.
Ancak benim bazı tabloların primary keylerine 2.bir alan eklemem gerekiyor.
Ibexpret ile primary key yapısını değiştiremedim. Sanırım mesele tabloya bağlı stored prosedürlerin olması.
Tabloların içideki datalar çok önemli değil şuan için.
Fakat tabloları kullanan birçok stored proc var.
Bu sebeple bir tabloyu silip yeniden açmam, bütün sp'leri tekrar oluşturmamı gerektirecek.
Tabloların primary key yapısında değişiklik yapma ile ilgili sql komutu/yardımcı program önerisi olan varsa çok iyi olacak benim için.
Eminim birçok arkadaş içinde faydalı olur.
Hakan Can
Üye
Mesajlar: 634
Kayıt: 04 Mar 2005 04:27
Konum: Ankara

Re: tablonun primary key'ini değiştirmem gerekli

Mesaj gönderen Hakan Can »

Tablonun içindeki kayıtları tamamen silip değiştirmeyi deneyebilirsin.

Eğer yine de olmuyorsa Primary Key'in hangi constraint adı altında oluşturulduğunu bulup (eğer kendin bir isim vermediysen, sistem tablolarından bulabilirsin) "DROP CONSTRAINT XXXXX" diye önce primary key'i drop edip sonra yeniden istediğin primary key'i oluşturmalısın.

Eğer bu primary key'e bakan başka tablolarda foreign key tanımlaması varsa onları da öncelikle DROP etmelisin.
akdatilla
Üye
Mesajlar: 292
Kayıt: 02 Nis 2006 06:04
Konum: Antalya

Re: tablonun primary key'ini değiştirmem gerekli

Mesaj gönderen akdatilla »

Teşekkür ederim.
Aslında sizin söylediğiniz gibi constrainti silmeyi denemiştim. Fakat ibexpert programı bir hata mesajı veriyordu (firebird 2.0 kullanıyordum).
Dün işyerinde kullandığım makinaya firebird 2.1 programını kurdurm. Bir de Sqlly Development firmasının InterBase/Firebird Development Studio programını kurdum. Bu programın tablo düzenleme aracını kullanarak tabloyu istediğim gibi düzenledim. Ancak belki farklı teknikler uyguluyordur diye düşünmüştüm.

Bugün sizin verdiğiniz mesaja göre tekrar bir deneme yaptım sorun çıkmadı.

ALTER TABLE TBL1 DROP CONSTRAINT INTEG_301
ALTER TABLE TBL1 ADD TEMPROW VARCHAR(1) DEFAULT 'H' NOT NULL
ALTER TABLE TBL1 ADD PRIMARY KEY (TEMPROW,ID)
Cevapla