Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Wie generiere ich in SQL Server eine Auto-Increment-Primärschlüssel-ID, die aus year , einem Sonderzeichen und einer fortlaufenden Seriennummer besteht?

Hier ist eine Komplettlösung. Bitte beachten Sie, dass es genau dasselbe ist wie das Duplikat, das ich markiert habe - Datenbankschema, Autoinkrement - Nur andere Details.

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

Bitte beachten Sie, dass der Primärschlüssel der Tabelle immer noch die identity sein muss Spalte (wie im Skript gezeigt), da die berechnete Spalte nicht der Primärschlüssel sein kann.