2012-06-21 32 views
6

Tôi đang gặp sự cố khi đặt cột được tính là not null.Gặp sự cố khi đặt cột được tính là không phải là Null

Điều tôi muốn đạt được là C001, C002..., v.v ... và đồng thời đặt thành not null.

Tôi đã đọc trên diễn đàn rằng điều này có thể đạt được bằng cách sử dụng giá trị mặc định 0 cho giá trị NULL.
Ví dụ: ISNULL(Price + Taxes, 0)

Tôi đã cố gắng để áp dụng cho công thức này:

('C'+right('000'+CONVERT([varchar](3),[ID],(0)),(3))) 

Nhưng nó dường như không làm việc. Bất cứ ai có thể cho tôi biết tôi đang thiếu gì?

ALTER CreditCard accountNo AS ISNULL('C'+right('000'+CONVERT([varchar](3),[idCreditCard],(0)),(3)),0) 
+0

Câu lệnh thay đổi của bạn bằng 'isnull' tạo một cột không cho phép null. Ít nhất là trong các bài kiểm tra của tôi. Tuy nhiên, bạn đang thiếu 'add' giữa tên bảng và tên cột. –

+0

Yup. Những gì tôi đang cố gắng tạo ra là một cột không cho phép null. Tôi đã thử thêm một add giữa tên bảng và tên cột nhưng nó không hoạt động. – Keenlearner

+0

Nhưng ... eh .. Đó là những gì tôi đã nói. Nó * không * tạo một cột không cho phép null. Điều gì làm cho bạn vui? Điều gì đã không hoạt động? –

Trả lời

6

Cuối cùng tôi đã tìm ra giải pháp cho vấn đề của mình!

Các truy vấn chính xác nên được:

ALTER TABLE CreditCard ADD accountNo AS ISNULL('C'+right('000'+CONVERT([varchar](3),[idCreditCard],(0)),(3)),0) 

Thanks for the guys giúp đỡ!

3

Nếu điều này liên quan đến SQL Server, bạn có thể quan tâm đến điều này từ MSDN.

'NOT NULL có thể được chỉ định cho cột được tính chỉ khi PERSISTED cũng được chỉ định.' http://msdn.microsoft.com/en-us/library/ms190273.aspx

... nhưng sau khi cố gắng đảo ngược câu hỏi từ câu trả lời, tôi nghĩ rằng 'người cố vấn chỉ muốn đảm bảo rằng không bao giờ có giá trị null trong cột mà không bị ràng buộc.