Hesaplanan sütunda kullanılan skaler fonksiyon, fonksiyonu güncellemenin en temiz yolu nedir?


10

Veritabanımızdaki skaler fonksiyonu güncellemek istiyorum. Bu işlev bir anahtar tabloda birkaç hesaplanan sütun için kullanılır, bu yüzden güncellemeye çalıştığımda bir bağımlılık hatası alıyorum. Sütunları açıkça kaldırabilir, işlevi güncelleyebilir ve sütunları yeniden ekleyebilirim, ancak fazladan fannying olmadan, bu sütun siparişlerini değiştirecek ve istenmeyen diğer sonuçları olabilir. Bunu yapmanın daha temiz bir yolu olup olmadığını merak ettim.


4
Bunu sadece kısmen gerçek işlevleri çağıran kukla işlevler oluşturarak çözdüm. Tabii ki, imza değişirse, o zaman tekrar biter.

3
Ne yazık ki, bunu yapmanın herhangi bir "sihirli" veya "temiz" yolu olduğunu düşünmüyorum. İşlevi değiştirmeniz gerekiyorsa - sütunları bırakmanız, işlevi değiştirmeniz ve tüm sütunları yeniden eklemeniz gerekir. Bunun hiçbir yolu yok.
marc_s

@marc_s İyi bir atış yapmaya değer, buralarda bir sürü akıllı insan :)
robertc

Yukarıdaki yorumları kabul edin. Burada bazı yardımlar sunmak için SYNONYM'lerin kapsamı olabileceğini düşündüm (hesaplanan sütundaki bir SYNONYM'ye bakın) - ancak bir kez eşanlamlıyı başka bir nesneye "yeniden yönlendirmek" için bir kez oluşturulamazsınız.
AdaTheDev

1
Yine de hiçbir yerde bir CLR UDT tanımını güncellemek kadar acı verici değil (değişiklik bir yönteme sadece bir tweak olsa ve depolama gösterimini hiç etkilemese bile)
Martin Smith

Yanıtlar:


2

Bu daha fazla iş olabilir ama peşinde olduğunuz şeyi (yaklaşık olarak) almalıdır:

1 - Ana tablodan ve güncellenmiş işlevden sadece PK'nız olan yeni bir tablo oluşturun.

2 - Eski sütununuzu bırakın

3 - Eski masanızı yeniden adlandırın TableName_Base

4 - VIEWAlanlarınızı görmek istediğiniz sırada olacak şekilde ana tablonuzu arama tablonuza bağlayan bir tablo oluşturun. Orijinal tablo adınız ne olursa olsun görünüme bir ad verin.

Bu durum potansiyel olarak bazı sorunlar yaratacak INSERTSve UPDATESbir görünümü aracılığıyla erişen olacak beri olsa. Bununla başa çıkmak için görünümü atlayarak doğrudan tabloya ekleyebilirsiniz.


Bu, daha fazla iş gibi görünüyor ve sütunları kaldırmak ve yeniden eklemekle aynı risk düzeyine sahip.
robertc

1
@robertc Bu, yüksek bir işlem ortamı ise daha az rahatsız edici olacaktır, ancak evet hala oldukça dağınık.
JNK
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.