2013-02-14 50 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