0

1つのストアドプロシージャで2つのテーブルを更新しようとすると、問題が発生します。SqlExceptionが発生します。

INSERTステートメントがFOREIGNKEY制約「FK」と競合しました。データベース""、テーブル "dbo.Users"、列'userID'で競合が発生しました。ステートメントは終了されました。

ALTER PROCEDURE  [dbo].[CreateProject]
    @ProjectID UNIQUEIDENTIFIER,
    @UserID UNIQUEIDENTIFIER,
    @ProjectName NVARCHAR(50),
    @Description NTEXT,
    @EstStartDate DATETIME,
    @EstEndDate DATETIME,
    @StatusID SMALLINT,
    @Priority SMALLINT

AS 

INSERT INTO DBO.Projects VALUES 
(@ProjectID,@ProjectName,GETDATE(),@Description,@EstStartDate,@EstEndDate,@StatusID,@Priority)


INSERT INTO Users_projects VALUES 
(@ProjectID,@UserID)
4

1 に答える 1

1

問題はUserIDの外部キーにあります。最初にUserIdをUsersテーブルに挿入する必要があります。いくつかのポインタ:「createProc」プロシージャは通常、ProjectIdを作成し、OUTPUTパラメータとして返す必要があります。また、ユーザー名を入力パラメーターとして使用し、procにUserIdを検索させることもできます。

于 2012-05-15T19:50:26.253 に答える