Je suis un étudiant SQL Server débutant et je dois répondre à une exigence et je ne sais pas comment Pour les produits de table, j'ai des colonnes ProductID, ProductName, SerialNo. Le numéro de série doit commencer à partir de 1001 et ...

0
Thomas A Mathew 14 mars 2021 à 19:50

2 réponses

Meilleure réponse

@@ IDENTITY conserve la dernière identité d'insertion dans la session, donc ce n'est pas utile pour vous, vous avez plusieurs options:

  • ajoutez une colonne calculée:

    alter table product add ProductId as concat('P',SerialNo)  
    
  • utilisez IDENT_CURRENT: IDENT_CURRENT vous donne les dernières valeurs d'identité du tableau

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

Je vous recommande d'utiliser la colonne calculée, mais vous pouvez toujours reproduire l'identifiant du produit, vous ne savez pas pourquoi vous devez l'enregistrer, c'est redondant

1
eshirvana 14 mars 2021 à 17:15

Je suggérerais de créer une colonne générée:

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

Ceci est calculé lorsque la colonne est référencée (sauf si la valeur est persistante).

Pour être honnête, je ne sais pas si vous avez vraiment besoin d'une telle chronique. La colonne d'identité doit être suffisante.

2
Gordon Linoff 14 mars 2021 à 17:11