我正在使用asp.net2008和MY SQL。
我想自动生成字段用户名的值,格式为
"SISI001", "SISI002",
等。在SQL中插入新记录时。
我该怎么做?
SQL查询可以是什么?
感谢。
答案 0 :(得分: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
希望能帮助到你。祝你好运。
答案 1 :(得分:1)
PLAN A> 您需要保留一个表(键),其中包含为各种实体生成的最后一个数字ID。这种情况下实体是“用户”。因此该表将包含两个cols即。 entity varchar(100)and lastid int。
然后,您可以编写一个函数来接收实体名称并返回递增的ID。使用与字符串组件“SISI”连接的此ID传递给MySQL以插入数据库。
以下是MySQL Table 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')
Sample Insert命令:
insert into users(username, password) values ('SISI'+getkey('user'), '$password')
计划B> 这样ID会有点大,但不需要任何额外的表。使用以下SQL获取新的唯一ID:
SELECT ROUND(NOW() + 0)
您可以将其作为insert命令的一部分传递,并将其与“SISI”的字符串组件连接。
答案 2 :(得分: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))
它可以帮助你怀疑......
答案 3 :(得分: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)
)
(未经测试)