3
我有一個填充表的存儲過程:如下面的代碼所示,此表具有也是主鍵列的標識列。將記錄從一列插入到同一作用域或語句中的另一列
我想追加主鍵包含前導字母:例如:ABC123。 顯然這是不可能的,因爲主鍵列是INT數據類型。
所以我創建了一個額外的列,以便我可以插入附加的主鍵。這工作除了我必須使新列Null,我正在使用UPDATE語句。
東西告訴我有更好的方法。
有沒有辦法,我可以做到這一點沒有初始插入後使用UPDATE,並有新列類別ID爲非空?
表編號:
CREATE TABLE [dbo].[Registration] (
[SystemID] INT IDENTITY (100035891, 1) NOT NULL,
[CategoryID] CHAR (13) NULL,
[FName] VARCHAR (30) NOT NULL,
[LName] VARCHAR (30) NOT NULL,
[MInit] CHAR (1) NULL,
PRIMARY KEY CLUSTERED ([SystemID] ASC)
);
存儲過程:
CREATE PROCEDURE [dbo].[uspInsertRegistration]
@FName VARCHAR(30),
@LName VARCHAR(30),
@MInit CHAR(1),
@CategoryID CHAR(13),
@SystemID int OUTPUT
AS
BEGIN
SET NOCOUNT ON
DECLARE @ErrCode int
INSERT INTO [dbo].[Registration] ([FName],[LName],[MInit])
VALUES (@FName, @LName, @MInit)
SELECT @ErrCode = @@ERROR, @SystemID = SCOPE_IDENTITY()
UPDATE [dbo].[Registration]
SET CategoryID = 'ABC'+ CAST(SystemID AS CHAR)
SET NOCOUNT OFF
RETURN @ErrCode
END
最後這是表看起來像數據:
感謝您成爲傳染與你的知識。 :)
蓋伊
大衛你好:計算列工作的很棒!在你提到它之前我沒有聽說過它。我簡單地更新了我的表格: [CategoryID] AS('abc'+ CAST(SystemID AS CHAR))PERSISTED 再次非常感謝您的建議和美妙的想法。 Guy – Asynchronous 2013-05-13 03:52:33