我有一个主键约束表,如下所示:
CONSTRAINT [APP_NOTIFICATION_LOG_PK] PRIMARY KEY CLUSTERED
(
[ID] ASC
) WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
我在表格中记录了一些我现在删除的记录。
我手动找到要插入的下一个ID:
SELECT @maxid_log = max(ID) + 1 FROM APP_NOTIFICATION_LOG;
然后我尝试插入记录:
INSERT INTO [dbo].[APP_NOTIFICATION_LOG]([ID],[COLOR],[ACTIVE],[FK_SYS_USERS_ID],[FK_APP_NOTIFICATIONS_ID], [MESSAGE],[WIN_USER_CREATOR], [FK_JOBR_RESOURCE_ID])
SELECT -- log notification created
@maxid_log,
anc.COLOR,
1,
anc.[FK_SYS_USERS_ID],
an.id,
'Notification cancelled!',
@creatorUserId,
@jobrResourceDbId
FROM [dbo].[APP_NOTIFICATIONS] an
INNER JOIN [dbo].[APP_NOTIFICATION_CONFIG] anc on anc.id = @configId
WHERE an.[FK_JOBR_RESOURCE_ID] = @jobrResourceDbId
在此阶段获取标题中的错误。它还说价值5是一个公共的。但是运行一个选择:
SELECT * FROM APP_NOTIFICATION_LOG WHERE ID = 5
...返回零记录。
这可能是什么问题?
答案 0 :(得分:1)
Select会返回多条记录吗?
自行运行并查看返回的行数。
答案 1 :(得分:1)
您的内部联接返回的结果不仅仅是1,因此您尝试插入具有相同ID的多个行。