基于年度的主键?

Bru*_*ino 5 database sql-server database-design

如何在SQL Server 2005/2008中使用以下格式创建主键: CurrentYear + auto-increment

示例:当前年份为2010年,在新表中,ID应从1开始,因此:20101,20102,20103,20104,20105 ......等等.

Pon*_*gge 9

清洁的解决方案是创建一个复合主键由例如YearCounter列.


Reg*_*ser 2

这在技术上满足您的要求:

CREATE TABLE #test
        ( seeded_column INT IDENTITY(1,1) NOT NULL
        , year_column INT NOT NULL DEFAULT(YEAR(GETDATE()))
        , calculated_column AS CONVERT(BIGINT, CONVERT(CHAR(4), year_column, 120) + CONVERT(VARCHAR(MAX), seeded_column)) PERSISTED PRIMARY KEY
        , test VARCHAR(MAX) NOT NULL);

INSERT INTO #test (test)
SELECT 'Badda'
UNION ALL
SELECT 'Cadda'
UNION ALL
SELECT 'Dadda'
UNION ALL
SELECT 'Fadda'
UNION ALL
SELECT 'Gadda'
UNION ALL
SELECT 'Hadda'
UNION ALL
SELECT 'Jadda'
UNION ALL
SELECT 'Kadda'
UNION ALL
SELECT 'Ladda'
UNION ALL
SELECT 'Madda'
UNION ALL
SELECT 'Nadda'
UNION ALL
SELECT 'Padda';

SELECT *
FROM #test;

DROP TABLE #test;
Run Code Online (Sandbox Code Playgroud)

  • 请注意,如果您希望 2011 年的第一条记录从 1 重新开始,则此操作将不起作用。 (2认同)