gpt4 book ai didi

sql - 将记录从一列插入到同一范围或语句中的另一列

转载 作者:行者123 更新时间:2023-12-04 13:43:01 24 4
gpt4 key购买 nike

我有一个填充表的存储过程:如以下代码所示,该表有一个标识列,该列也是主键列。

我想附加主键以包含前导字母:示例:ABC123。显然这是不可能的,因为主键列是 INT 数据类型。

所以我创建了一个额外的列,以便我可以插入附加的主键。除了我必须将新列设置为 Null 并且我正在使用 UPDATE 语句外,这行得通。

有些事情告诉我有更好的方法。

有没有一种方法可以在初始插入后不使用 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

最后,这是包含数据的表格:

enter image description here

感谢您用自己的知识感染他人。 :)

家伙

最佳答案

我的建议是使用计算列,因为您尝试做的事情会引入冗余。见下文:

http://msdn.microsoft.com/en-us/library/ms191250%28v=sql.105%29.aspx

或者,使其足够大以包含 GUID,将 GUID 放入插入的列中,然后更新它。

关于sql - 将记录从一列插入到同一范围或语句中的另一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16514394/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com