Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

В SQL Server как да генерирам ИД на първичен ключ с автоматично нарастване, който се състои от година, специален знак и номер на последователна серия?

Ето цялостно решение. Моля, обърнете внимание, че е точно същият като дубликата, който маркирах - Схема на базата данни, автоматично увеличаване - Просто различни подробности.

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

Моля, обърнете внимание, че първичният ключ на таблицата все още трябва да бъде identity колона (както е показано в скрипта), тъй като изчислената колона не може да бъде първичен ключ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. каква е разликата между клъстерен индекс и уникален индекс?

  2. Как да създам потребител в SQL-Server, който има достъп само до една таблица и може да вмъква само редове

  3. Как да създадете текстов файл с помощта на sql скрипт с текст |

  4. Как да получите броя вярно/невярно от битово поле в две отделни колони

  5. SQL Server 2005/2008 Group By оператор с параметри без използване на динамичен SQL?