J'ai ce SPSQL générer identifiant unique lors de la copie de plusieurs enregistrements
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
Le problème est que la sélection peut retourner plusieurs enregistrements pour un capid
, et je veux particulièrement les copier, mais chaque enregistrement a besoin d'un @imageid
que je ne génère qu'une seule fois, je dois utiliser ce imageid
dans les deux tableaux.
Merci
Je ne suis pas sûr si c'est un doublon ou non - Si c'est s'il vous plaît laissez-moi savoir: https://stackoverflow.com/a/34832231/3094533 –
Je suggère d'utiliser de meilleurs alias que 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 Avez-vous envisagé d'utiliser le Clause OUTPUT de votre insertion initiale? https://docs.microsoft.com/en-us/sql/t-sql/queries/output-clause-transact-sql –