0

我正在使用 asp.net2008 和我的 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。在这种情况下,实体是“用户”。所以该表将包含两个列,即。实体 varchar(100) 和 lastid int。

然后,您可以编写一个函数来接收实体名称并返回递增的 ID。使用此 ID 与要传递给 MySQL 以插入数据库的字符串组件“SISI”连接。

以下是 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 回答