テーブルにデータを入力するストアド プロシージャがあります。以下のコードに示すように、このテーブルには、主キー列でもある ID 列があります。
先頭の文字を含むように主キーを追加したいと思います: 例: 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
最後に、これはテーブルがデータでどのように見えるかです:
あなたの知識に伝染していただきありがとうございます。:)
男