sql >> Base de Datos >  >> RDS >> Sqlserver

En SQL Server, ¿cómo genero una ID de clave principal de incremento automático que consiste en un año, un carácter especial y un número de serie secuencial?

Aquí hay una solución completa. Tenga en cuenta que es exactamente igual que el duplicado que he marcado - Esquema de base de datos, autoincremento - Solo detalles 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

Tenga en cuenta que la clave principal de la tabla debe seguir siendo la identity columna (como se muestra en el script) ya que la columna calculada no puede ser la clave principal.