Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Dans SQL Server, comment générer un ID de clé primaire à incrémentation automatique composé de year , d'un caractère spécial et d'un numéro de série séquentiel ?

Voici une solution complète. Veuillez noter que c'est exactement le même que le doublon que j'ai marqué - Schéma de base de données, autoincrement - Juste des détails différents.

CREATE TABLE [dbo].[STUDENT]
(
    [ID] int identity(1,1) PRIMARY KEY,
    [Stud_LName] [varchar](100) NOT NULL,
    [Stud_FName] [varchar](100) NOT NULL,
    [Stud_MName] [varchar](100) NOT NULL
)
GO

CREATE FUNCTION dbo.GetSudentId
(
    @id int
)
RETURNS varchar(10)
AS
BEGIN
    RETURN Concat(Year(Getdate()), '-', RIGHT(Concat('0000', (SELECT COUNT(*) FROM STUDENT WHERE id < @Id)), 6))
END
GO

ALTER TABLE [dbo].[STUDENT]
    ADD Stud_ID AS (dbo.GetSudentId(Id))
GO

Veuillez noter que la clé primaire de la table doit toujours être l'identity colonne (comme indiqué dans le script) puisque la colonne calculée ne peut pas être la clé primaire.