Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

In SQL Server come faccio a generare un ID di chiave primaria con incremento automatico composto da year , un carattere speciale e un numero di serie sequenziale?

Ecco una soluzione completa. Tieni presente che è esattamente lo stesso del duplicato che ho contrassegnato - Schema di database, autoincrement - Solo dettagli diversi.

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

Tieni presente che la chiave primaria della tabella deve essere ancora identity colonna (come mostrato nello script) poiché la colonna calcolata non può essere la chiave primaria.