2012-06-21 24 views
6

Tengo problemas para configurar una columna calculada como not null.Tiene problemas para establecer una columna calculada como no nula

Lo que queremos lograr es C001, C002..., etc., y al mismo tiempo configurarlo como not null.

He leído en un foro que esto se puede lograr utilizando el valor predeterminado 0 para valores NULOS.
por ejemplo, ISNULL(Price + Taxes, 0)

he tratado de aplicar a esta fórmula:

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

pero no parece funcionar. ¿Alguien puede decirme qué me estoy perdiendo?

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

Su declaración alter con 'isnull' crea una columna que no permite valores nulos. Al menos en mis pruebas. Sin embargo, le falta un 'agregar' entre el nombre de la tabla y el nombre de la columna. –

+0

Sí. Lo que intento crear es una columna que no permite nulo. Traté de agregar un complemento entre el nombre de la tabla y el nombre de la columna, pero no funcionó. – Keenlearner

+0

Pero ... eh .. Eso es lo que dije. * Crea * una columna que no permite valores nulos. ¿Qué pasó contigo? ¿Lo que no funcionó? –

Respuesta

6

¡Finalmente he encontrado la solución a mi problema!

La consulta correcta debe ser:

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

Gracias por la ayuda chicos!

3

Si esto se relaciona con SQL Server, es posible que le interese esto desde MSDN.

'NOT NULL se puede especificar para las columnas calculadas solo si PERSISTED también está especificado.' http://msdn.microsoft.com/en-us/library/ms190273.aspx

... pero después de tratar de hacer ingeniería inversa a la pregunta de la respuesta, creo que 'keenlearner sólo quería asegurarse de que nunca hubo un valor nulo en la columna sin tener la restricción.

Cuestiones relacionadas