【发布时间】:2019-04-16 21:46:44
【问题描述】:
我有一个表,其中一行有 3 个主键,每当我尝试更新此行时,我都会得到“无法插入重复值”,但我尝试使用 UPDATE 命令而不是 INSERT 更新该行?
CREATE TABLE dbo.TestData
(
OgrId int NOT NULL,
StrId int NOT NULL,
UserId int NOT NULL,
ProductId int NOT NULL,
CONSTRAINT PK_OgrId_StrId_UserId
PRIMARY KEY(OgrId, StrId, UserId)
)
DECLARE @ogrId int = 99;
DECLARE @strId int = 44;
DECLARE @userId int = 1223;
DECLARE @id int = 14;
DECLARE @querySelect int =
(SELECT ProductId FROM dbo.TestData
WHERE
OgrId = @ogrId AND
StrId = @strId AND
UserId = @userId AND
ProductId= @id);
IF @querySelect IS NULL
BEGIN
INSERT INTO dbo.TestData(OgrId, StrId, UserId, ProductId)
VALUES (@ogrId , @strId , @userId, @id);
END
ELSE
BEGIN
UPDATE dbo.TestData
SET ProductId= @id
WHERE
OgrId = @ogrId AND
StrId = @strId AND
UserId = @userId;
END
【问题讨论】:
-
你不能有“3个主键”,主键只能是一个。你所拥有的是由 3 个关键字段组成的 PK
-
>>>我正在尝试使用 UPDATE 更新该行INSERT INTO dbo.TestData(OgrId, StrId, UserId, ProductId) VALUES (@ogrId , @strId , @userId, @id);
-
还有 if 语句选择更新或插入...我可以有 3 个主键,这就是重点!
-
没有什么可以帮助拥有“3个主键”的人
-
我已经修复了,谢谢回复:)
标签: sql sql-server tsql