2010-11-19 42 views
0

lorsque vous cliquez sur un lien "Make Default", le SP suivant est exécuté. Ce que je veux, c'est que lorsque le lien "Make Default" est cliqué puis seul l'enregistrement "IsDefault" correspondant au "UserAddressID" particulier est mis à 1 et TOUS les autres enregistrements doivent être mis à 0 dans la colonne teableErreur SQL Server: nom de colonne non valide

me donner l'erreur suivante: -

Invalid column name 'UserAddressID'

Lorsque la colonne existe! Quel est le problème avec mon SP ??

+0

if (UserAddressID! = @ UserAddressID) - qu'essayez-vous de réaliser ici? – pavanred

+0

@ Pavan..un utilisateur peut ajouter beaucoup d'adresse, mais seulement une adresse peut être par défaut .. Je dois définir la valeur "IsDefault" col dans le tableau à 1 lorsque l'utilisateur clique sur "Make DEfault" lien sur ma page aspx – Serenity

Répondre

2

Le problème est ici:

if([email protected]) 

La colonne UserAddressID n'existe pas en dehors de la portée de l'instruction SQL.

En fait, vous n'avez pas du tout besoin de l'instruction if. La condition que vous vérifiez est déjà incluse dans le SQL.

Vous pouvez également combiner les deux requêtes en une seule mise à jour:

UPDATE SC.UserAddressDetails 
SET IsDefault = (CASE WHEN [email protected] THEN 1 ELSE 0 END) 
+0

alors comment puis-je définir le reste des enregistrements sur 0 dans la colonne IsDefault sinon de cette façon? – Serenity

+0

plz vérifier mes mises à jour ci-dessus – Serenity

+0

ouais besoin de mettre à jour pour un utilisateur seulement .. mais UserAddressID prend en charge de cela..I thot donc:/UserAddressID est unique pour chaque utilisateur – Serenity

1

Vous pouvez mettre à jour la valeur IsDefault à 1 en utilisant -

UPDATE SC.UserAddressDetails SET IsDefault=1 WHERE [email protected] 

Dans la structure de votre table, vous pouvez définir la valeur par défaut ISDefault as 0. Dans ce cas, vous n'aurez plus besoin de mettre à jour tous les enregistrements à l'aide de

ALTER TABLE SC.UserAddressDetails ADD CONSTRAINT default_isdefault DEFAULT 0 FOR IsDefault 
0

Cela ressemble à un problème de schéma, c'est pourquoi vos proc stockés deviennent confus. Créez une colonne appelée DefaultUserAddressID dans votre table Utilisateurs. Alors il ne peut y en avoir qu'un. Créer une colonne IsDefault sur la table Addresses n'est pas une bonne conception car elle utilise plus de données pour réaliser la même chose, elle est sujette aux erreurs et vous oblige à effectuer toutes sortes d'autres vérifications dans tous les process stockés qui mettent à jour les informations d'adresse.

Simple, c'est mieux.

Questions connexes