2009-07-14 8 views
0

J'ai du code qui désactive un déclencheur sur une table, exécute une mise à jour et réactive le déclencheur. Il ne supprime pas la table source ou ne met pas à jour le schéma."Le schéma a été modifié après la création de la table cible Réexécutez la requête Sélectionner dans.":

Tout irait bien, mais en même temps il y a des requêtes séparées qui utilisent cette table comme source pour un SELECT INTO. Pour une raison quelconque, lorsque les deux requêtes sont en cours d'exécution en même temps, je reçois cette erreur: (. Je sélectionne dans une table temporaire)

Schema changed after the target table was created. Rerun the Select Into query.

Alors, ma première question:

L'appel de "DISABLE TRIGGER" ou "ENABLE TRIGGER" change-t-il le schéma d'une table dans TSQL?

Et ma deuxième question:

Pourquoi le deuxième rapport de requête un changement de schéma, lorsque la destination est une table temporaire?

Répondre

1

appelant apparemment "DISABLE TRIGGER" ou "ENABLE TRIGGER" change le schéma d'une table. Il y a probablement un drapeau catch all dans une table système qui suit ce changement et vous cause du chagrin.

peut-être que vous pourriez «dire» que le déclencheur ne «fonctionne pas» d'une manière différente. créer une table et insérer une ligne, dans le déclencheur vérifier l'existence d'une ligne dans cette table, si elle existe, retourner 0, sinon faire le traitement. maintenant il suffit d'insérer/supprimer cette ligne si nécessaire ...

+0

Hmm ... merci! Au moins cela explique le comportement. Il semble que les solutions disponibles sont un peu un kludge cependant. – Chris

1

Vous ne voulez jamais désactiver les déclencheurs sur un système de production qui n'est pas en mode mono-utilisateur ou vous pouvez avoir de graves problèmes d'intégrité des données. Il désactive le tirgger de tous les utilisateurs, pas seulement vous. Je pense que vous devez trouver un moyen différent pour gérer votre problème si vous voulez que votre daqtabase fonctionne correctement.

Questions connexes