Hàm vô hướng được sử dụng trong cột được tính toán, cách sạch nhất để cập nhật hàm là gì?


10

Tôi muốn cập nhật một hàm vô hướng trong cơ sở dữ liệu của chúng tôi. Hàm này được sử dụng cho một số cột được tính toán trong một bảng chính vì vậy tôi gặp lỗi phụ thuộc nếu tôi cố cập nhật nó. Tôi có thể loại bỏ các cột một cách rõ ràng, cập nhật chức năng và thêm lại các cột nhưng, không cần phải lo lắng nhiều, điều đó sẽ thay đổi các đơn hàng cột và có thể có các hậu quả không lường trước khác. Tôi tự hỏi nếu có một cách làm sạch hơn?


4
Tôi đã giải quyết điều này chỉ một phần bằng cách tạo các hàm giả gọi các hàm thực. Tất nhiên, nếu chữ ký thay đổi, thì nó lại kết thúc.

3
Thật không may, tôi không nghĩ rằng có bất kỳ cách "ma thuật" hay "sạch" hơn để làm điều này. Nếu bạn cần sửa đổi chức năng - bạn sẽ cần bỏ các cột, sửa đổi chức năng và thêm lại tất cả các cột. Không có cách nào xung quanh này.
marc_s

@marc_s Thật đáng để thử, rất nhiều người thông minh ở đây :)
robertc

Đồng ý với ý kiến ​​trên. Nghĩ rằng có thể đã có phạm vi để các SYNONYM cung cấp một số trợ giúp ở đây (tham khảo một SYNONYM trong cột được tính toán) - nhưng bạn không thể THAY ĐỔI một từ đồng nghĩa một khi được tạo để "chuyển hướng" nó sang đối tượng khác.
AdaTheDev

1
Vẫn không có gì đau đớn bằng việc cập nhật định nghĩa về UDR CLR (ngay cả khi thay đổi chỉ là một chỉnh sửa cho một phương thức và hoàn toàn không ảnh hưởng đến đại diện lưu trữ)
Martin Smith

Câu trả lời:


2

Đây có thể là công việc nhiều hơn nhưng nó sẽ nhận được (khoảng) những gì bạn đang sau:

1 - Tạo một bảng mới chỉ có PK của bạn từ bảng chính và chức năng được cập nhật.

2 - Thả cột cũ của bạn

3 - Đổi tên bảng cũ của bạn thành một cái gì đó như TableName_Base

4 - Tạo một VIEWbảng kết nối bảng chính của bạn với bảng tra cứu của bạn, với các trường theo thứ tự mà bạn muốn xem chúng. Đặt tên cho khung nhìn bất kể tên bảng gốc của bạn là gì.

Điều này có khả năng sẽ tạo ra một số vấn đề với INSERTSUPDATESmặc dù vì bạn sẽ truy cập qua chế độ xem. Để giải quyết vấn đề đó, bạn có thể chèn trực tiếp vào bảng, bỏ qua chế độ xem.


Nghe có vẻ như nhiều công việc hơn và cùng mức độ rủi ro như loại bỏ và thêm lại các cột.
robertc

1
@robertc Sẽ ít gây rối hơn nếu đây là môi trường giao dịch cao, nhưng vâng, nó vẫn còn khá lộn xộn.
JNK
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.