sql >> Databáze >  >> RDS >> Sqlserver

Jak na serveru SQL Server vygeneruji ID primárního klíče s automatickým přírůstkem, které se skládá z roku , speciálního znaku a sekvenčního čísla řady?

Zde je kompletní řešení. Upozorňujeme, že je to přesně stejné jako duplikát, který jsem označil – Schéma databáze, automatické zvýšení - Jen jiné detaily.

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

Upozorňujeme, že primárním klíčem tabulky musí být stále identity sloupec (jak je znázorněno ve skriptu), protože vypočítaný sloupec nemůže být primární klíč.



  1. Chyba 508 – Bylo dosaženo limitu zdrojů (web php+mysql+jquery)

  2. Načtěte více řádků pomocí dotazu pomocí AND a OR

  3. Prokázání ekvivalence SQL dotazu

  4. Oracle – co se stane s transakcí v případě ztráty spojení ORA-03135?