2016-07-05 8 views
-2

1行を更新しようとしていますが、すべての行が更新されています。SQL Serverですべての行が更新されています

今朝起きた。私はdatatableを使いたくありません。

CREATE PROCEDURE [dbo].[spUserProfile] 
    @FirstName nvarchar(50), 
    @MiddleName nvarchar(50), 
    @LastName nvarchar(50), 
    @Mobile nvarchar(50), 
    @Aadhar nvarchar(50), 
    @PAN nvarchar(50), 
    @Address text, 
    @CityID int, 
    @PinCode int, 
    @StateID int, 
    @CountryID int 
AS 
BEGIN 
    UPDATE tblUserProfiles 
    SET FirstName = @FirstName, 
     MiddleName = @MiddleName, 
     LastName = @LastName, 
     Mobile = @Mobile, Aadhar = @Aadhar, 
     PAN = @PAN, Address = @Address, 
     CityID = @CityID, PinCode = @PinCode, 
     StateID = @StateID, CountryID = @CountryID 
    WHERE 
     UserID = UserId 
END 

UserIDこのテーブルに別のテーブルが格納されます。だから私は私に私の解決策を与え、私は

+7

あなたの 'UPDATE'クエリには' WHERE'句を持っていない... – Siyual

+0

は、特定の行を更新するために、WHERE句を使用します。 – DineshDB

+2

これで、where句があり、フィールドがそれ自身と等しいかどうかを尋ねると、常にすべてが更新されます。 –

答えて

0
create proc [dbo].[spUserProfile] 
@FirstName nvarchar(50), 
@MiddleName nvarchar(50), 
@LastName nvarchar(50), 
@Mobile nvarchar(50), 
@Aadhar nvarchar(50), 
@PAN nvarchar(50), 
@Address text, 
@CityID int, 
@PinCode int, 
@StateID int, 
@CountryID int, 
@UserId Int -- Added the missing argument 

AS 
Begin 

    update tblUserProfiles 
    Set FirstName = @FirstName, MiddleName = @MiddleName, LastName = @LastName, 
     Mobile = @Mobile, Aadhar = @Aadhar, 
     PAN = @PAN, Address = @Address, CityID = @CityID,    
     PinCode = @PinCode, StateID = @StateID, CountryID = @CountryID, 
     Where UserID = @UserId -- Added the where clause 

End 
+0

@rahul:私はUserIdを引数として追加し、Where句を追加したことを通知されます – Lucky

+0

あなたはその情報を変更する必要があります。 – Siyual

+0

@Siyual:提案してくれてありがとうございました – Lucky

1

UPDATEをしないのですどのようなエラーしてください再び

それを提供する必要はありません条件に一致するすべての行を更新します。条件がない場合、SQLはすべてを更新する要求としてUPDATEを処理します。このWHEREで

UPDATE tblUserProfiles 
SET 
    FirstName = @FirstName 
, MiddleName = @MiddleName 
, LastName = @LastName 
, Mobile = @Mobile 
, Aadhar = @Aadhar 
, PAN = @PAN 
, Address = @Address 
, CityID = @CityID 
, PinCode = @PinCode 
, StateID = @StateID 
, CountryID = @CountryID 
WHERE UserID = @UserId -- add a WHERE clause 
+0

誰も答えはありません.... gr8 – rahul

5

WHERE UserID = UserID

:あなたはそのユーザIDで識別されるユーザーのためのレコードを更新しようとしているので、次のようにクエリを変更する必要があるように見えます

あなたのクエリは、UserIDの列の値がそれ自身と等しいすべての行を更新します。これはすべての行です。 (編集:ユーザーIDがNULLの行がある場合、以下のように指摘されている場合を除きます)

ユーザーIDを特定の値に設定します。

例: WHERE UserID = '10'

サブクエリまたはWHEREでは、このようなのような使用し、それが一連​​の行を更新しました:あなたを助けるためにこのサイト上の WHERE UserID IN (1,2,3,4,etc)

リファレンスページを:
http://www.w3schools.com/sql/sql_where.asp
http://www.w3resource.com/sql/subqueries/understanding-sql-subqueries.php

+1

"ここで、UserIDの列の値はそれ自身と同じです。これは次のとおりです。すべての行 " - どこで使用するかrIDはnullですか? ;) – onedaywhen

+2

潜在的に間違った仮定の下でハハ!私はすべてのユーザーがIDを持っていると仮定し、おそらくそれを明らかにする必要があります:) – Jackson

0

のSQL構文、あなたのwhere句が始まる前に、あなたのコードで上記の構文、余分なコンマ(、)を比較すると、http://www.w3schools.com/sql/sql_update.asp

をなぜあなたの理由が考えられます。あなたがここに同じことを見つけることができます

UPDATE tablename 
SET column1 = value1, .... columnN = valueN 
WHERE (condition) 

:は以下の通りです。コードは、それが何のためのwhere節に遭遇していません。

TRY:

UPDATE tblUserProfiles 
SET FirstName = @FirstName, 
    MiddleName = @MiddleName, 
    LastName = @LastName, 
    Mobile = @Mobile, Aadhar = @Aadhar, 
    PAN = @PAN, Address = @Address, CityID = @CityID,    
    PinCode = @PinCode, StateID = @StateID, CountryID = @CountryID 
WHERE 
    UserID = UserId 
関連する問題