asp.net2008 と MY SQL を使用しています。
ユーザー名フィールドの値を次の形式で自動生成したい
"SISI001", "SISI002",
新しいレコードが挿入されるときはいつでもSQLでなど。
どうすればできますか?
SQLクエリは何ですか?
ありがとう。
自動インクリメント整数データ型の列を追加し、
「Max()」関数を使用してテーブル内のその列の最大値を取得し、その値を整数変数に割り当てます(変数を「x」とします)。
その後
string userid = "SISI";
x=x+1;
string count = new string('0',6-x.ToString().length);
userid=userid+count+x.ToString();
それが役立つことを願って使用userid
してください。username
幸運を。
プラン 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」の文字列コンポーネントと連結できます。
私は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))
それがあなたの疑問に役立つかもしれません...
これを試して:
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)
)
(未検証)