【发布时间】:2014-08-26 17:10:24
【问题描述】:
我有一个用于一次更新两个表的存储过程。
我的问题是第一个表有一个自动递增的 ID 列(“commentID”),而我的第二个表与此有关系,所以 我需要从第一个 INSERT 中新创建的 ID 才能使第二个插入。
我尝试了以下方法,我可以保存而不会出错,但它没有按应有的方式执行,也没有按预期更新表。 有人可以告诉我我在这里做错了什么吗?
我的 SQL:
ALTER PROCEDURE [dbo].[MOC_UpdateComment]
@imgID int,
@commentID int = '999999',
@comment nvarchar(1000),
@lastUpdate nvarchar(50),
@modBy varchar(50)
AS
BEGIN
DECLARE @temp AS TABLE
(
commentID int
)
SET NOCOUNT ON;
BEGIN TRANSACTION;
INSERT INTO MOC_BlogComments
(
imgID,
comment
)
OUTPUT inserted.commentID INTO @temp(commentID)
SELECT @imgID,
@comment
INSERT INTO MOC_LogComments
(
commentID,
lastUpdate,
modTime,
modBy
)
SELECT commentID,
@lastUpdate,
GETDATE(),
@modBy
FROM @temp
COMMIT TRANSACTION;
END
【问题讨论】:
-
您似乎正试图不恰当地插入标识值。注释掉第一个插入的 `imgID,**,剩下的就可以了。
标签: sql sql-server select insert output