顺序参考编号

时间:2013-02-14 13:23:15

标签: tsql sequential

我目前只有两个表,因为我正在学习,第一列是Book_skey,这是由系统使用IDENTITY函数自动生成的,但是我想在第二列中创建自动化字段名为BookRef,其中第一行将是B00000001,下一行将是B00000002等。

USE Occupancy

DECLARE @BookNumber INT
SET @BookNumber = 1
WHILE @BookNumber <= 5000

BEGIN
INSERT INTO Book(BookNumber)
SELECT @BookNumber
SET @BookNumber = @BookNumber + 1

END

可以这样做吗?

由于

Wayne

1 个答案:

答案 0 :(得分:0)

您只需要使用计算列。

CREATE TABLE Book (
    Book_skey       int IDENTITY(1,1)
   ,BookRef         as ('B' + RIGHT(CONVERT(CHAR(9), (100000000 + BookNumber)),8))
   ,BookNumber      int
)

SET NOCOUNT ON

DECLARE @BookNumber INT
SET @BookNumber = 1
WHILE @BookNumber <= 5000
  BEGIN
    INSERT INTO Book(BookNumber)
    SELECT @BookNumber

    SET @BookNumber = @BookNumber + 1
END

SELECT * FROM Book