2008-11-05 9 views
0

Je dois modifier un déclencheur dans sql server 2005 et je souhaite le faire en utilisant un adaptateur de table et une instruction SQL, pas un proc stocké. Je sais que je pourrais l'exécuter dans le navigateur de requêtes et l'exécuter, mais je dois le déployer sur plusieurs bases de données et utiliser un adaptateur de table dans la mise à jour. Est-ce possible?Modification d'un déclencheur dans Sql Server 2005

Ajouter une requête Doing -> Mise à jour -> coller le code ci-dessous -> Query Builder pour voir si elle parse

print("USE [DataBaseName] 
GO 
/****** Object: Trigger [dbo].[UpdateCurrentAddress] Script Date: 10/30/2008 14:47:15 ******/ 
SET ANSI_NULLS ON 
GO 
SET QUOTED_IDENTIFIER ON 
GO 
ALTER TRIGGER [dbo].[UpdateCurrentAddress] ON [dbo].[PreviousAddresses] 
FOR INSERT, UPDATE, DELETE 
AS 
-- Check to see if there was an insert/update or a deletion. 
IF (SELECT COUNT(*) FROM inserted) >= 1 
BEGIN 
    IF (SELECT CountryID FROM inserted) <> 181 

...moar..."); 

erreur ... L'UTILISATION [DataBaseName] construction SQL ou une déclaration n'est pas pris en charge.

et si je retire la partie supérieure et commencent à seulement ALTER TRIGGER

La construction ALTER TRIGGER SQL ou une déclaration n'est pas pris en charge.

Je suis encore assez nouveau à ce sujet et je ne serais pas surpris que soit je vais soit à ce sujet dans le mauvais sens et/ou il est impossible de faire sans proc stocké.

EDIT: Oui, je le fais en C#.

merci. Je peux le faire de cette façon à partir d'ALTER TRIGGER, cela fera le travail.

Répondre

2

Le TableAdapter attend un jeu de résultats, pas une requête réelle. Pour ce faire, vous devrez utiliser l'objet SqlCommand pour effectuer la mise à jour.

Si vous n'en avez pas utilisé un avant que ce soit assez simple, d'abord vous déclarez votre connexion, puis vous créez votre commande en utilisant la connexion. Une fois la commande créée, définissez le texte de commande égal à votre script, puis vous pouvez appeler la méthode ExecuteNonQuery() pour exécuter le script après l'ouverture de la connexion. Si vous dites quelle langue vous utilisez, je peux essayer de donner un exemple.

Modifier

Voici un exemple de C#, rapide et sale mais il obtient le point à travers. NOTE, fait de la mémoire, mais devrait être correct.

using(SqlConnection oConnection = new SqlConnection("Yourconnectionhere")) 
using(SqlCommand oCommand = new SqlCommand(oConnection)) 
{ 
    //Configure the command object 
    oCommand.CommandText = "Your script here"; 

    //Open connectin and run script 
    oConnection.Open(); 
    oCommand.ExecuteNonQuery(); 
    oConnection.Close(); 
} 
Questions connexes