Merhabalar arkadaşlar, Sitemizi programlama ile ilgilenen bütün arkadaşlarımızın türkçe içerik konusunda çektiği sıkıntılar düşünülerek soru/cevap şeklinde bir etkileşimde bulunabilmesi için kurduk. Umuyoruz hepimiz için güzel bir deneyim olur. Hasscript Ekibi
0 oy
19 gösterim

Oracle veri tabanında bazı tabloların PrimaryKey'leri ve bununla bağlantılı ForegeinKey'leriin disabled olduğunu gördüm. listesini çekmeye çalıştım şu query ile;

select *  from user_constraints t where t.status <> 'ENABLED' and t.CONSTRAINT_TYPE = 'R';

ancak tek tek enable etmek yerine otomatik bir döngü nasıl yapabilirim?

bunun sırasının önermi var mıdır? Netten bulduğum bir script ile enable etmeye çalıştım. Ancak olmadı bir türlü. Yani önce PK leri enable et sonra FK leri. Sanırım önce FK leri enable etmeye çalışmış sonra PK leri deneyince şuan halen disabled-invalid gözüküyor. Bir hata almıştım şöyle

ORA-02270: bu sütun listesine karşılık gelen bnezersiz veya birincil anahtar yok"

Veri Tabanı kategorisinde (1.8k puan) sordu

1 cevap

0 oy
 
En İyi Cevap

PK bir unique değer sağlamak durumunda. Sanıyorum önce PK alanları enable etmen gerekir ki tablonun bütünlüğü ve bütün kayıtların benzersiz(unique) olduğu belirlensin. Daha sonradan açman gerekir.

Tek tek açmaya gelirsen,
Öncelikle execute immediate ile yazabilirsin. Yada script generate ettirebilir onu çalıştırırsın. 

Tek PK için
ALTER TABLE table_name ENABLE CONSTRAINT constraint_name;

Çoğu için ben bunu ürettiriyorum. 

select 'ALTER TABLE ' || t.TABLE_NAME|| ' ENABLE CONSTRAINT ' || t.CONSTRAINT_NAME  from user_constraints t where t.status <> 'ENABLED' and t.CONSTRAINT_TYPE = 'R';

(3.5k puan) cevapladı
seçti
...