次のストアド プロシージャがあります。
ALTER Procedure dbo.APPL_ServerEnvironmentInsert
(
@ServerEnvironmentName varchar(50),
@ServerEnvironmentDescription varchar(1000),
@UserCreatedId uniqueidentifier,
@ServerEnvironmentId uniqueidentifier OUTPUT
)
WITH RECOMPILE
AS
-- Stores the ServerEnvironmentId.
DECLARE @APPL_ServerEnvironment TABLE (ServerEnvironmentId uniqueidentifier)
-- Insert the data into the table.
INSERT INTO APPL_ServerEnvironment WITH(TABLOCKX)
(
ServerEnvironmentName,
ServerEnvironmentDescription,
DateCreated,
UserCreatedId
)
OUTPUT Inserted.ServerEnvironmentId INTO @APPL_ServerEnvironment
VALUES
(
@ServerEnvironmentName,
@ServerEnvironmentDescription,
GETDATE(),
@UserCreatedId
)
-- If @ServerEnvironmentId was not supplied.
IF (@ServerEnvironmentId IS NULL)
BEGIN
-- Get the ServerEnvironmentId.
SELECT @ServerEnvironmentId = ServerEnvironmentId
FROM @APPL_ServerEnvironment
END
ServerEnvironmentId 列は、(newsequentialid()) であるデフォルトが設定された主キーです。
2 つのシナリオで機能するには、このストアド プロシージャが必要です。
- ServerEnvironmentId - WORKS に指定された値。
- ServerEnvironmentId に値が指定されていません - 機能しません - NULL 値を挿入できません。この列にデフォルトを設定することで、これで問題ないと思いました。
両方のシナリオで機能するように、誰かがこの手順を修正するのを手伝ってください. 現在、すべての SP がこの傾向に従っているため、ソリューションには最小限の変更が必要です。