J'utilise MERGE
déclaration afin d'insérer l'entrée XML
à la table de base de données SQL Server. Comment exécuter plusieurs conditions dans le bloc WHEN MATCHED
. S'il vous plaît se référer au code ci-dessous.Utilisation de plusieurs déclarations dans
USING TableRelationship AS new
ON (new.TableRelationshipTypeID = old.TableRelationshipTypeID) AND old.ToRoleID = @RoleID
WHEN MATCHED THEN
UPDATE
SET old.FromRoleID = new.FromRoleID
-- Condition 2
-- Condition 3
Actuellement WHEN MATCHED
il exécute cette ligne old.FromRoleID = new.FromRoleID
. Comment puis-je exécuter les 3 lignes (-- Condition 2 and 3
) dans la condition WHEN NOT MATCHED
.
Ex:
C'est ce que j'attends. WHEN MATCHED
Je veux juste mettre à jour le champ ancien (old.ThruDate = GETDATE()
) et insérer un enregistrement à la même table. Je ne peux pas séparer ces déclarations par une virgule. SQL émet
Syntaxe incorrecte
MERGE INTO Party.TableRelationship AS old
USING TableRelationship AS new ON (new.TableRelationshipTypeID = old.TableRelationshipTypeID) AND old.ToRoleID = @RoleID
WHEN MATCHED THEN
UPDATE
SET old.ThruDate = GETDATE(),
INSERT (FromRoleID, ToRoleID, TableRelationshipTypeID)
VALUES (new.FromRoleID, new.ToRoleID, new.TableRelationshipTypeID);
Merci.
S'il vous plaît montrer le code pour les deuxième et troisième conditions (peu importe si elle ne le fait pas courir, montrez-nous la logique là-bas). –
Peut-être lié (ou dupliquer) en fonction de ce qui est vraiment demandé ici: https://stackoverflow.com/questions/25848219/multiple-update-statement-in-sql-server-merge?rq=1 –