2013-02-14 47 views
0

我有一张表,目前只有两列,因为我正在学习,第一列是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 

可以这样做?

感谢

韦恩

+1

'Book_skey'和'BookRef'之间有什么区别?为什么你需要两个标识符? 'BookRef'实质上只是'B' + Book_skey填充了尾随零? – 2013-02-14 13:25:34

+0

嗨马丁 Book_Skey将系统IdeRefer BookRef将用于通信等 – wafw1971 2013-02-14 13:27:05

+1

但为什么你需要存储它?你不能只从'Book_skey'计算它吗? 'SELECT'B'+ RIGHT('0000000'+ CAST(Book_skey AS VARCHAR(8)),8)' – 2013-02-14 13:28:18

回答

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