Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

No SQL Server, como gero um ID de chave primária de incremento automático que consiste em year , um caractere especial e um número de série sequencial?


Aqui está uma solução completa. Observe que é exatamente igual à duplicata que marquei - Esquema de banco de dados, incremento automático - Apenas detalhes diferentes.
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

Observe que a chave primária da tabela ainda deve ser a identity column (conforme mostrado no script), pois a coluna computada não pode ser a chave primária.