我正在使用 asp.net2008 和我的 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。在这种情况下,实体是“用户”。所以该表将包含两个列,即。实体 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”的字符串组件连接起来。
我不是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)
)
(未测试)