2009-05-23 8 views
0

J'ai essayé d'effectuer la mise à jour sur la table qui a été déclenché par la mise à jour sur autre table et je suis arrivé message d'erreur:Trigger qui modifie plusieurs lignes sur la table diffrent puis il a été invoqué dans SQL Server 2005

La valeur de la ligne (s) mis à jour ou supprimé soit ne pas rendre la ligne unique ou ils modifient plusieurs lignes.

Par exemple, j'ai cette table:

table_1 
=========== 
int id (primary_key,identity) 
nchar(10) state_name 

table_2 
=========== 
int number 

Et après la mise à jour table_2 Je souhaite modifier toutes les valeurs dans la colonne « state_name » à « faux »

create trigger tr on table_2 
after update 
as 
update table_1 set state_name = 'false' 

Et lorsque je tente de mettre à jour table_2 Je reçois un message d'erreur. Existe-t-il un moyen de contourner cette limitation?

Répondre

1

create table table_1 (identité id int (1,1) clé primaire, state_name char (10))

create table table_2 (nombre entier) go

create trigger tr sur table_2 après la mise à jour comme mise à jour table_1 mis state_name = 'false' go

insert table_1 sélectionnez 'true' insert table_2 sélectionnez 1

go

mise à jour table_2 numéro set = 2

select * from table_1

select * from table_2

Quelle version utilisez-vous? Il a bien fonctionné dans SQL 2K8 & SQL 2K5. Vérifiez votre code à nouveau.

+0

Cela fonctionne très bien tant que vous avez des enregistrements distincts dans la table_2. Essayez d'ajouter plus de 1s dedans. Je l'ai vu dans le passé. –

+0

J'utilise SQL 2K5. Vous avez raison, cela fonctionne! C'est intéressant parce que j'ai eu ce message d'erreur lors de l'édition des enregistrements avec Sql Server Managment Studio table_2 -> Ouvrir la table et après avoir changé d'enregistrement je ne pouvais pas le valider. Je me demande pourquoi. –

+0

De plus, quand j'ajoute une colonne avec la clé primaire à la table_2 cela fonctionne quand j'édite les enregistrements de cette façon. Table_2-> Ouvrir la table Il doit y avoir une limitation de Sql Server Management Studio. –

1

Ajoutez une contrainte de clé primaire dans la table 2 (par exemple, un auto-incrément non) et tout ira bien.

Questions connexes