0

挿入および更新中に、テーブル内の重複レコードをチェックする必要があります。以下は私の質問です。挿入の場合は正常に機能しますが、更新時に失敗します。私はそれを理解することができません。私を助けてください。

Insert:

Set @Count =  (Select ISNULL(Count(*),0) From AccountMaster Where [Name] = @Name and Id=@Id and Flag=1);
If @Count >0 and @InsertUpdateFlag=1
  BEGIN
    Set @DbErrormessage = 'Business Name and Account Id must be unique. Try again.';
  END   

アップデート :

Set @Count =  (Select Count(*) From AccountMaster Where [Name] = @Name and Id <> @Id and Flag=1);
 If @Count >0 and @InsertUpdateFlag=2
  BEGIN
   Set @DbErrormessage = 'Business Name is in already in use by some other account. Try another one.';
  END

更新の条件は、Id と Name がデータベースに存在してはならないということです。だから私は名前が他のIDで存在しない場所を数えています。しかし、動作していないようです。

以下は私のテーブルスキーマです。

SELECT [PkId] //Primary Key as Int
      ,[Id]  // Unique Key varchar(25)
      ,[Created]
      ,[Type]
      ,[Status]
      ,[Name]  //Business Name
      ,[ContactPerson]
      ,[ContactNumber]
      ,[Email]
      ,[Address]
      ,[LocationId]
      ,[Remarks]
      ,[Flag]
  FROM [AccountMaster]

ID とビジネス名は、挿入/更新の両方で一意である必要があります。したがって、挿入および更新中に確認する必要があります。

4

1 に答える 1

1

名前に一意の制約を入れてチェックを忘れると、制約違反を処理でき、名前が既に存在することがわかります

于 2012-07-05T10:46:11.170 に答える