Dans le cas suivant:création d'une table si elle n'existe pas
if object_id('MyTable') is null create table MyTable(myColumn int)
est-il pas possible que deux appelants distincts pourraient aussi bien évaluer object_id (« MyTable ») comme nul et donc à la fois essayer de créer la table . Évidemment, l'un des deux appelants dans ce scénario échouerait, mais idéalement, aucun appelant ne devrait échouer, plutôt que l'un devrait bloquer et l'autre devrait créer la table, alors l'appelant bloqué verra object_id ('MyTable') comme non nul et continuez. Sur quoi puis-je appliquer un verrouillage exclusif, de sorte que je ne verrouille pas plus que ce qui est absolument nécessaire?
en quelque sorte ne vous inquiétez pas être heureux que le 2ème appelant échouera est peu de confort. Je préférerais le 2ème appelant à procéder sans erreur –
@Ralph: Makes sens. À quelle fréquence cette procédure est-elle exécutée? Pourquoi voudriez-vous créer une table dans la procédure? Est-ce un tableau, vous allez laisser tomber à la fin de la procédure? Si non, pourquoi ne pas créer une vraie table à l'avance? S'il vous plaît expliquer votre scénario pour savoir pourquoi vous faites une telle chose? – shahkalpesh