0

asp.net2008 と MY SQL を使用しています。

ユーザー名フィールドの値を次の形式で自動生成したい

"SISI001", "SISI002",

新しいレコードが挿入されるときはいつでもSQLでなど。

どうすればできますか?

SQLクエリは何ですか?

ありがとう。

4

4 に答える 4

2

自動インクリメント整数データ型の列を追加し、
「Max()」関数を使用してテーブル内のその列の最大値を取得し、その値を整数変数に割り当てます(変数を「x」とします)。
その後

string userid = "SISI";
x=x+1;
string count = new string('0',6-x.ToString().length);
userid=userid+count+x.ToString();

それが役立つことを願って使用useridしてください。username
幸運を。

于 2012-05-17T06:06:55.487 に答える
1

プラン A> さまざまなエンティティに対して生成された最後の数値 ID を含むテーブル (キー) を保持する必要があります。この場合、エンティティは「ユーザー」です。したがって、テーブルには 2 つの列が含まれます。エンティティ varchar(100) および lastid int.

次に、エンティティ名を受け取り、インクリメントされた ID を返す関数を記述できます。この ID を文字列コンポーネント「SISI」と連結して使用し、データベースに挿入するために MySQL に渡します。

以下は、MySQL テーブルの tblkeys です。

CREATE TABLE `tblkeys` (
  `entity` varchar(100) NOT NULL,
  `lastid` int(11) NOT NULL,
  PRIMARY KEY (`entity`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

MySQL 関数:

DELIMITER $$

CREATE FUNCTION `getkey`( ps_entity VARCHAR(100)) RETURNS INT(11)
BEGIN
    DECLARE ll_lastid INT;
    UPDATE tblkeys SET lastid = lastid+1 WHERE tblkeys.entity = ps_entity;
    SELECT tblkeys.lastid INTO ll_lastid FROM tblkeys WHERE tblkeys.entity = ps_entity;
    RETURN ll_lastid;
    END$$

DELIMITER ;

サンプル関数呼び出し:

SELECT getkey('user')

サンプル挿入コマンド:

insert into users(username, password) values ('SISI'+getkey('user'), '$password')

プラン B> この方法では、ID は少し大きくなりますが、余分なテーブルは必要ありません。次の SQL を使用して、新しい一意の ID を取得します。

SELECT ROUND(NOW() + 0)

これを挿入コマンドの一部として渡し、「SISI」の文字列コンポーネントと連結できます。

于 2012-05-17T05:17:27.603 に答える
0

私はasp.net開発者ではありませんが、私はあなたを助けること
ができますあなたはこのようなことをすることができます...

mysqlデータベースにシーケンスを作成します-

CREATE SEQUENCE "Database_name"."SEQUENCE1" MINVALUE 1 MAXVALUE 9999999999999999999999999999 INCREMENT BY 001 START WITH 21 CACHE 20 NOORDER NOCYCLE ;

次に、挿入中にこのクエリを使用します-----

 insert into testing (userName) values(concat('SISI', sequence1.nextval))

それがあなたの疑問に役立つかもしれません...

于 2012-05-17T05:40:15.713 に答える
0

これを試して:

CREATE TABLE Users (
 IDs int NOT NULL IDENTITY (1, 1),
 USERNAME AS 'SISI' + RIGHT('000000000' + CAST(IDs as varchar(10)), 4), --//getting uniqueness of IDs field
 Address varchar(150) 
)

(未検証)

于 2012-05-17T05:46:18.647 に答える