Je suis à la recherche d'une solution pour effectuer l'insertion, sur clé en double mise à jour comme opération dans SQL Server 2005. Cette opération peut insérer ou mettre à jour un grand nombre d'entrées. SQL Server 2008 a une opération MERGE qui ferait parfaitement, le problème est que nous sommes coincés avec SQL Server 2005.
J'ai examiné des solutions standard, mais tous ne sont pas bons, car ils supposent que seul une entrée est mise à jour/insérée.
Est-ce que quelqu'un connaît un moyen de répliquer le comportement MERGE dans les anciennes versions de SQL Server?SQL Server 2005, en vrac UPDATE ou INSERT
Répondre
Alex Kuznetsov's blog contient une suggestion utilisant la clause OUTPUT
d'une instruction UPDATE
. Pour paraphraser l'exemple de cette entrée de blog (non testé):
DECLARE @updated_ids table(id int)
UPDATE table
SET ...
OUTPUT inserted.id INTO @updated_ids
FROM table INNER JOIN data-to-insert ON table.id = data-to-insert.id
INSERT INTO table
SELECT ...
FROM data-to-insert
WHERE id NOT IN (SELECT id FROM @updated_ids)
Je dois commencer à utiliser la clause OUTPUT plus! –
Une note sur les performances, si vous ajoutez une clé primaire à la variable de table, il accélère considérablement l'exécution. Pour moi, cela a réduit le temps d'exécution d'une insertion/mise à jour de 100k lignes de 4 minutes à ~ 6 secondes. 'déclarer la table @updated_ids (id int PRIMARY KEY CLUSTERED)' – Tr1stan
- 1. SQL INSERT ou UPDATE
- 2. SQL Server: INSERT, UPDATE, DELETE, CREATE Délais
- 3. INSERT rapide SQL sans UPDATE
- 4. SQLite, SQL: Utiliser UPDATE ou INSERT en conséquence
- 5. Comportement des déclencheurs "AFTER INSERT, UPDATE" dans SQL Server
- 6. Accorder SELECT, UPDATE, INSERT, DELETE à toutes les tables sauf 1 (ou plus) dans SQL Server 2005
- 7. SQL Server 2005 et SELECT et UPDATE verrouillés
- 8. sous-requêtes dans UPDATE SET (SQL Server 2005)
- 9. sql server 2005 xml update query caractères chinois
- 10. Création d'un script UPDATE dans SQL Server 2005
- 11. avec insert en vrac Doctrine 1.2
- 12. Insert SQL Server
- 13. INSERT - PHP & SQL Server
- 14. Requête SQL Server 2005
- 15. SQL Server 2005 problème - defrag nécessaire?
- 16. recherche en texte intégral SQL Server 2005
- 17. SQL Server 2005 (Express) - Connexion ou utilisateur
- 18. TSQL: UPDATE avec INSERT INTO SELECT FROM
- 19. erreur dans SQL Server 2005 Syntaxe
- 20. Modification d'un déclencheur dans Sql Server 2005
- 21. Implémentation de l'arbre parent (ou du digraphe) de SQL Server SQL Server 2005
- 22. SQL Server 2008 INSERT Optimisation
- 23. transaction SQL Server 2005
- 24. SQL Server 2008 - utilisation de variables locales pour un déclencheur INSERT et UPDATE
- 25. Ouvrir SQL CE .sdf dans SQL Server 2005 ou 2008
- 26. Sql Server 2005 AutoCompletion
- 27. SQL SERVER 2005
- 28. Sql Server 2005 Pivot
- 29. date de conversion en SQL Server 2005
- 30. Requête SQL SQL Server 2005
Qu'est-ce que SQL Server * 2003 *? – Heinzi
Mon mauvais, je voulais dire la version 2005 –