Insert で起動されるトリガーがあります。このトリガーは、別のテーブルに挿入します。ここに私のコードがあります:
SELECT @maxTeamId = 0
SELECT @maxTeamId = ISNULL(MAX(teamId), 0) from [dbo].[tblTeamslist]
--- Check if home team has already been inserted into the table.
SELECT @homeTeamId = -1
SELECT
@homeTeamId = teamId
FROM
[dbo].[tblTeamslist] t
JOIN inserted i
ON t.teamName = i.hometeam
IF (@homeTeamId = -1)
BEGIN
SET IDENTITY_INSERT tblteamslist ON
SELECT @homeTeamId = @maxTeamId + 1
SELECT @maxTeamId = @maxTeamId + 1
INSERT INTO [dbo].[tblTeamslist] (teamid,teamname) SELECT @homeTeamId, i.hometeam FROM inserted i
SET IDENTITY_INSERT tblteamslist off
END
--- Check if away team has already been inserted into the table.
SELECT @awayTeamId = -1
SELECT
@awayTeamId = teamId
FROM
[dbo].[tblTeamslist] t
JOIN inserted i
ON t.teamName = i.awayteam
IF (@awayTeamId = -1)
BEGIN
SET IDENTITY_INSERT tblteamslist ON
SELECT @awayTeamId = @maxTeamId + 1
SELECT @maxTeamId = @maxTeamId + 1
INSERT INTO [dbo].[tblTeamslist] (teamid,teamname) SELECT @awayTeamId, i.awayteam FROM inserted i
SET IDENTITY_INSERT tblteamslist off
END
お気付きのように、tblTeamsList に存在しないチームを入力しようとしています。これは、「PRIMARY KEY制約「PK_tblTeamsList」の違反」を取得しているというエラーです。オブジェクト 'dbo.tblTeamsList' に重複するキーを挿入できません。重複キー値は (24).' です。コードでは、ID を毎回 +1 ずつ増やそうとしています。何がうまくいかないのですか?