0
我有这样的SPSQL复制多个记录时生成唯一的ID
CREATE PROCEDURE ApplyExistingImageAcrossModel
@capidfrom int,
@capidto int,
@type int
AS
BEGIN
DECLARE @imageid uniqueidentifier
INSERT INTO ImageMetaData
(ImageId,CapId,[Type],Source,DateAdded,OriginalFileName,OriginalUrl,isDefault,Height,Width,ViewType,CapImageId,islive)
SELECT @imageid,@capidto,@type,source,GETDATE(),originalfilename,originalurl,isdefault,height,width,viewtype,capimageid,islive
FROM ImageMetaData
WHERE [type] = @type AND capid = @capidfrom
INSERT INTO ImageData
(ImageId,ImageBinary)
SELECT @imageid,ImageBinary
FROM ImageData A
LEFT JOIN ImageMetaData B
ON A.ImageId = B.ImageId
WHERE B.[type] = @type
AND B.capid = @capidfrom
END
的问题是,选择可以为特定的capid
返回多个记录,我想复制它们,但每个记录都需要一个独特的@imageid
,我只生成一次,我需要在两个表中使用imageid
。
感谢
我不确定它是否是重复的 - 如果是这样,请让我知道:https://stackoverflow.com/a/34832231/3094533 –
我会建议使用比A,B更好的别名。http: //sqlblog.com/blogs/aaron_bertrand/archive/2009/10/08/bad-habits-to-kick-using-table-aliases-like-abc-or-t1-t2-t3.aspx您是否考虑过使用你最初插入的OUTPUT子句? https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql –