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

Hvordan genererer jeg i SQL Server et auto-increment primærnøgle-id, der består af år , en speciel char og et sekventielt serienummer?

Her er en komplet løsning. Bemærk venligst, at det er nøjagtigt det samme som det dublet, jeg har markeret - Databaseskema, autoincrement - Bare andre detaljer.

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

Bemærk venligst, at tabellens primære nøgle stadig skal være identity kolonne (som vist i scriptet), da den beregnede kolonne ikke kan være den primære nøgle.



  1. PHPExcel vil ikke eksportere til CSV

  2. Regneark vs. databaser:Er det tid til at skifte? Del 2

  3. hjælp til forespørgsel over relationstabel

  4. Tilslutning af Oracle 21c til SQL Server