sql >> Databasteknik >  >> RDS >> Sqlserver

Hur genererar jag i SQL Server ett primärnyckel-ID för autoinkrement som består av år , ett speciellt tecken och ett sekventiellt serienummer?

Här är en komplett lösning. Observera att det är exakt samma som dubbletten jag har markerat - Databasschema, autoincrement - Bara andra 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

Observera att den primära nyckeln i tabellen fortfarande måste vara identity kolumn (som visas i skriptet) eftersom den beräknade kolumnen inte kan vara den primära nyckeln.



  1. Hur ersätter man den senaste förekomsten av en delsträng i MYSQL?

  2. Kan inte hämta data från MySQL-tabellen som matchar specifik uid

  3. Hämta kodningen av en Postgres-databas

  4. Välj den högsta lönen