J'ai beaucoup de code que j'essaie de lancer lorsque j'interroge la table sysobjects pour vérifier si un objet existe avant de le déposer et de le créer à nouveau.Pourquoi IF EXISTS ne fonctionnerait-il pas?
question étant, parfois si je vais:
if not exists (select name from sysobjects o where o.name = 'my_table' and o.type = 'U')
CREATE TABLE my_table (..)
go
cela fonctionne, pas de soucis. Cependant, quand je suis revenu pour l'exécuter à nouveau, je reçois cette belle erreur:
SQL Server Error on (myserver) Error:2714 at Line:10 Message:There is already an object named 'my_table' in the database.
Merci pour cela, SQL Programmer. En fait, je vous ai demandé de ne pas créer cette table si elle existe déjà. -_-
Des idées?
J'ai essayé à la fois le "S'il vous plaît supprimer votre version précédente si vous en avez un, puis installez cette version" et "S'il vous plaît seulement installer version si vous n'en avez pas une précédente ". Je veux juste un script que je peux exécuter encore et encore (pour tester) sans casser quoi que ce soit (codes système multiples, erreurs système essayant de dupliquer les contraintes, etc.) – glasnt
votre logique était erronée. le si existe doit être utilisé pour ne pas créer. – mson
Le 'Si existant' est utilisé pour déposer, puis créer. Sinon, il le crée simplement. Ma logique n'a pas tort. – glasnt