1

Mysql データベースはそのようなものです。

userID -> primaryKey, required, unsigned integer, auto increment, unique
usermail -> unique,varchar,required

新しいユーザーを作成しています。userId は自動インクリメントです。以前にユーザーメールを挿入すると、エラーが発生します。私の質問はこれです

Let's think that userID is between 1-9.(there are 9 users now). 
Somebody has inserted same usermail before and took error. 
After that,new user inserted another usermail but userID became 11 instead 10. 
Why? What should i do to make it 10?
4

3 に答える 3

0

データベース プロパティ自体からユーザー ID をインクリメントする必要がありますか。私が言っているのは、レコードを挿入する前に、データベースから最後のユーザーIDを取得し、それを整数変数に格納してからインクリメントして、新しいレコードとともにデータベースに挿入し直すということです。

最後のユーザー ID が 9 だったとします。次のクエリを使用します -Select max(userID) from "your table";

int x=0;
SqlDataReader dr=com.ExecuteReader();
if(dr.HasRows)
{
    While(dr.Read())
    {
       x=Convert.ToInt32(dr.GetString(0).ToString);
    }
}
x=x+1;

新しいx値があるので、新しいレコードでデータベースに簡単に挿入できます。そのため、自動インクリメントに従い、障害が発生しても挿入は行われUserIDず、増加しません。

于 2013-06-25T13:41:16.447 に答える
0

エラーが発生した場合、新しい行が挿入され、uniqueid がインクリメントされているようです。エラーが発生した場合は、テーブルに最新の ID を照会し、自動インクリメント値をリセットする必要があります

ALTER TABLE `table_name` AUTO_INCREMENT =new_number_here

ここにあります: http://forums.mysql.com/read.php?20,16088,17748#msg-17748

于 2013-06-25T12:30:20.363 に答える