sql >> Database >  >> RDS >> Sqlserver

Hoe genereer ik in SQL Server een auto-increment primaire sleutel-ID die bestaat uit jaar , een speciaal teken en een opeenvolgend serienummer?

Hier is een complete oplossing. Houd er rekening mee dat het precies hetzelfde is als het duplicaat dat ik heb gemarkeerd - Databaseschema, autoincrement - Alleen 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

Houd er rekening mee dat de primaire sleutel van de tabel nog steeds de identity moet zijn kolom (zoals weergegeven in het script) omdat de berekende kolom niet de primaire sleutel kan zijn.



  1. Leer documenten op het Windows-bestandssysteem op te slaan en te analyseren met SQL Server Semantic Search - Deel 1

  2. Wat is er eigenlijk aan de hand met dat zoeken?

  3. Vereenvoudig het gebruik van de database (psycopg2) door een module te maken

  4. Hoe krijg ik tekstuele inhoud van BLOB in Oracle SQL?