Insertion de fusion avec l'instruction select
Cela fonctionne pour moi
MERGE Table1 AS tgt
USING
(
SELECT
TOP 1
*
FROM
Table2,
(
SELECT
itmid
FROM
Table3
WHERE
id = @id
) as a
WHERE
id = @id
) AS src
ON ( tgt.id = src.id )
WHEN MATCHED THEN
UPDATE SET qty = qty + @qty
WHEN NOT MATCHED THEN
INSERT itmid
VALUES itmid;
Mais quand j'ai changer comme ça, sa ne fonctionne pas, montre l'erreur près de dernière select
MERGE Table1 AS tgt
USING
(
SELECT
TOP 1
*
FROM
Table2
WHERE
id = @id
) AS src
ON ( tgt.id = src.id )
WHEN MATCHED THEN
UPDATE SET qty = qty + @qty
WHEN NOT MATCHED THEN
INSERT itmid
SELECT itmid FROM Table3 WHERE id = @id;
OriginalL'auteur | 2013-02-01
Vous devez vous connecter pour publier un commentaire.
Selon MSDN docs
La syntaxe avec
INSERT
deSELECT
comme:N'est pas autorisé!
Je voudrais essayer de résoudre votre problème en faisant une autre fusion avec
Table3
.OriginalL'auteur mipe34
ce faire
Devrait fonctionner correctement selon http://msdn.microsoft.com/en-us/library/bb522522(v=sql.105).aspx
Désolé j'ai interprété ce mal et ma réponse originale à cette question serait stand qui a été
Comme l'insertion de fusion prend un insert à l'heure et elle peut échouer pour plusieurs insertions.
INSERT () VALUES (SELECT...) n'est pas valide pour la FUSION de la syntaxe. Vous ne pouvez pas le "truc". S'il vous plaît supprimer ce que vous avez de toute évidence pas testé votre code.
OriginalL'auteur Nikshep