Soy un estudiante principiante de SQL Server y necesito cumplir con un requisito y no sé cómo. Para productos de tabla, tengo columnas ProductID, ProductName, SerialNo. El SerialNo debe comenzar desde 1001 y ...

0
Thomas A Mathew 14 mar. 2021 a las 19:50

2 respuestas

La mejor respuesta

@@ IDENTITY mantiene la última identidad insertada en la sesión, por lo que no es útil para usted, tiene varias opciones:

  • agregue una columna calculada:

    alter table product add ProductId as concat('P',SerialNo)  
    
  • use IDENT_CURRENT: IDENT_CURRENT le da los últimos valores de identidad en la tabla

    INSERT INTO Product VALUES(concat('P',IDENT_CURRENT('dbo.product')+1) ,'Nokia')
    SELECT * FROM Product
    

Le recomiendo que vaya con la columna calculada, sin embargo, siempre puede reproducir el ID del producto, no estoy seguro de por qué necesita guardarlo, es redundante

1
eshirvana 14 mar. 2021 a las 17:15

Sugeriría crear una columna generada:

alter table product add column ProductId as concat('P', SerialNo);

Esto se calcula cuando se hace referencia a la columna (a menos que el valor se mantenga).

Para ser honesto, no estoy seguro de si realmente necesita una columna de este tipo. La columna de identidad debería ser suficiente.

2
Gordon Linoff 14 mar. 2021 a las 17:11