Devre dışı Oracle tüm tablo kısıtlamaları
Nasıl tek bir komut ile Oracle sınırlar tablo devre dışı bırakabilir miyim? Bu da tüm tablolar için tek bir tablo, tablolar listesi, ya da olabilir.
CEVAP
Daha iyi geçici biriktirme dosyaları yazılı önlemek için. PL/SQL bloğu kullanın. SQL*Plus bu çalıştırmak veya bir paket veya prosedür bu işi koyabilirsiniz. Bu USER_TABLES katılmak görünüm kısıtlamaları önlemek için vardır.
Gerçekten tüm kısıtlamaları (NULL, birincil anahtarlar, vb dahil olmak üzere) devre dışı bırakmak istiyorum pek olası değil. NEREDE yan constraint_type koyarak düşünmelisin.
BEGIN
FOR c IN
(SELECT c.owner, c.table_name, c.constraint_name
FROM user_constraints c, user_tables t
WHERE c.table_name = t.table_name
AND c.status = 'ENABLED'
ORDER BY c.constraint_type DESC)
LOOP
dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" disable constraint ' || c.constraint_name);
END LOOP;
END;
/
Yine kısıtlamalar etkinleştirme biraz tricker - yabancı anahtar kısıtlaması onları referans için önce birincil anahtar kısıtlamaları etkinleştirmeniz gerekir. Bu bir emirdir kullanarak constraint_type TARAFINDAN yapılabilir. '' = Birincil anahtar, 'R' = yabancı anahtar. P
BEGIN
FOR c IN
(SELECT c.owner, c.table_name, c.constraint_name
FROM user_constraints c, user_tables t
WHERE c.table_name = t.table_name
AND c.status = 'DISABLED'
ORDER BY c.constraint_type)
LOOP
dbms_utility.exec_ddl_statement('alter table "' || c.owner || '"."' || c.table_name || '" enable constraint ' || c.constraint_name);
END LOOP;
END;
/
Nasıl içeriğini ekrana sığıyorsa kaydı...
Nasıl yabancı anahtar kısıtlamaları ge...
Nasıl kaydırma geçici olarak devre dış...
nasıl devre dışı düğmesini bootstrap t...
Nasıl bir yöntem adı ve satır numarası...