Reputation: 704
I'm having problems setting a computed column as not null
.
What I want to achieve is C001
,C002...
, etc. and at the same time set it as not null
.
I have read on a forum that this can be achieved by using the default value 0 for NULL values.
E.g., ISNULL(Price + Taxes, 0)
I have tried to apply to this formula:
('C'+right('000'+CONVERT([varchar](3),[ID],(0)),(3)))
But it didn't seem to work. Can anyone tell me what am I missing?
ALTER CreditCard accountNo AS ISNULL('C'+right('000'+CONVERT([varchar](3),[idCreditCard],(0)),(3)),0)
Upvotes: 6
Views: 3212
Reputation: 3162
If this relates to SQL Server, you might be interested in this from MSDN.
'NOT NULL can be specified for computed columns only if PERSISTED is also specified.' http://msdn.microsoft.com/en-us/library/ms190273.aspx
... but after trying to reverse-engineering the question from the answer, I think that 'keenlearner wanted only to ensure that there was never a null value in the column without having the constraint.
Upvotes: 3
Reputation: 704
I've finally found the solution to my problem!
The correct query should be:
ALTER TABLE CreditCard ADD accountNo AS ISNULL('C'+right('000'+CONVERT([varchar](3),[idCreditCard],(0)),(3)),0)
Thanks for the help guys!
Upvotes: 6