我有一个填充表的存储过程:如下代码所示,这个表有一个标识列,它也是主键列。
我想附加主键以包含前导字母:示例:ABC123。显然这是不可能的,因为主键列是 INT 数据类型。
所以我创建了一个额外的列,以便我可以插入附加的主键。除了我必须将新列设为 Null 并且我正在使用 UPDATE 语句之外,这可行。
有人告诉我有更好的方法。
有没有一种方法可以在初始 Insert 之后不使用 UPDATE 并将新列CategoryID设置为Not Null的情况下执行此操作?
表代码:
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
最后,这是表格与数据的样子:
感谢您的知识具有感染力。:)
盖伊