mis a part cela, si je me souviens de mes cours sur sysbase (l'ancêtre de SQL server) à dallas il y a 20 ans presque, le code:
Code:
1 2 3 4
| INSERT INTO ma_table (....)
SELECT .... FROM ma_tmp_table a (nolock)
LEFT OUTER JOIN ma_table b (nolock) ON a.id=b.id
WHERE b.id IS NULL |
normalement, créé une table temporaire dans la tempDB avec le select puis reprend en faisant l'insert dans la table de destination a partir de cette table ?
donc si une MAJ a eu lieu sur la table de destination entre temps on peut avoir un lock si on mets un nolock
d'où, au final, il faut faire le insert select sans les nolock et en readuncommited ?