2012-06-21 9 views
6

Mam problemy z ustawieniem kolumny obliczeniowej jako not null.Problem z ustawieniem kolumny obliczeniowej jako niezgodnej Null

Co chcę osiągnąć to C001, C002... itp. I jednocześnie ustawić jako not null.

Przeczytałem na forum, że można to osiągnąć za pomocą wartości domyślnej 0 dla wartości NULL.
np ISNULL(Price + Taxes, 0)

starałem się zastosować do tego wzoru:

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

Ale to nie wydają się działać. Czy ktoś może mi powiedzieć, czego mi brakuje?

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

Twoje polecenie alter z 'isnull' tworzy kolumnę, która nie dopuszcza wartości null. Przynajmniej w moich testach. Jednak brakuje "add" między nazwą tabeli a nazwą kolumny. –

+0

Yup. Próbuję utworzyć kolumnę, która nie dopuszcza wartości null. Próbowałem dodać dodawanie między nazwą tabeli i nazwą kolumny, ale nie zadziałało. – Keenlearner

+0

Ale ... eh .. To co powiedziałem. It * does * tworzy kolumnę, która nie dopuszcza wartości null. Co się stało dla Ciebie? Co nie działa? –

Odpowiedz

6

mam w końcu znaleźć rozwiązanie mojego problemu!

Prawidłowe zapytanie powinno być:

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

Dzięki za pomoc chłopaki!

3

Jeśli dotyczy to SQL Server, może Cię to zainteresować z MSDN.

"NOT NULL można określić dla kolumn obliczeniowych tylko wtedy, gdy określono również PERSISTED". http://msdn.microsoft.com/en-us/library/ms190273.aspx

... ale po próbie reverse-engineering pytanie z odpowiedzią, myślę, że „keenlearner chcieliśmy tylko zapewnić, że nigdy nie była wartość null w kolumnie bez konieczności ograniczenie.

Powiązane problemy