Sử dụng SQL Server, làm cách nào để tôi viết một ràng buộc trên một trường trong bảng, do đó phạm vi giá trị chấp nhận được là từ 0 đến 100?Làm cách nào để viết mã SQL ràng buộc cho một số nằm trong phạm vi?
Trả lời
ALTER TABLE Table
ADD CONSTRAINT CK_Table_Column_Range CHECK (
Column >= 0 AND Column <= 100 --Inclusive
)
Ràng buộc kiểm tra như "tên trường GIỮA 0 VÀ 100" nên thực hiện.
Hãy thử:
ALTER TABLE myTableName
ADD CONSTRAINT myTableName_myColumnName_valZeroToOneHundred
CHECK (myColumnName BETWEEN 0 AND 100)
kiểm tra này sẽ bao gồm - đây là một số thông tin về GIỮA từ MSDN: BETWEEN (Transact SQL)
Theo tôi, câu hỏi đúng không phải là "làm thế nào" nhưng "tại sao ".
Quy tắc 0-100 này nghe với tôi giống như quy tắc kinh doanh. Tại sao nó phải được thực hiện ở phía máy chủ/cơ sở dữ liệu? Nếu nhập sai giá trị, ai sẽ nhận được thông báo lỗi?
Nếu người dùng nhận được thông báo lỗi, sẽ không dễ dàng hơn khi mã cho anh ta thông báo trước khi giao dịch đến máy chủ không?
Điều gì về sửa đổi phạm vi? Có thể thay đổi quy tắc? Tôi đoán có: quy tắc ALLWAYS thay đổi. Phạm vi có thể được cập nhật từ 0-100 đến 101-200? Trong trường hợp này, những gì về các giá trị đã được nhập vào cơ sở dữ liệu?
Nếu bạn sử dụng 'GIỮA 0 VÀ 100' như được đề cập trong các câu trả lời khác, SQL Server Management Studio sẽ chuyển nó thành' ([column]> = (0) AND [column] <= (100)) 'cho bạn nếu bạn đang sử dụng GUI để tạo nó. –