我有一个表,其中有一个用于存储用户名的列。我把它作为格式user1,user2,user3的strchar(它不是由用户插入,自动它应该生成)所以为此我需要获取用户的max int值然后将其递增1并用字符串附加它用户并将其存储到下一行。
答案 0 :(得分:1)
添加自动增加的字段
CREATE TABLE Users
(
ID int NOT NULL AUTO_INCREMENT=1,
LastName varchar(255) ... ,
FirstName varchar(255) ... ,
... ,
SeqToken varchar(255)
)
在插入时创建触发器:
触发器将自动生成SeqToken字段:
CREATE TRIGGER trig_insert_user
ON [Users]
AFTER INSERT
AS
UPDATE [Users]
SET SeqToken='User'+CAST(ID AS VARCHAR)
WHERE ID=INSERTED.ID
答案 1 :(得分:1)
如果您坚持将user
前缀保存到该号码,则可以添加标识列,并将该用户列创建为computed column:
CREATE TABLE tblUsers
(
UserId int Identity(1,1) PRIMARY KEY,
UserName As 'User'+ CAST(UserId as varchar),
-- Other columns
)
这样,无论何时选择UserName列,都会计算其值
您还可以将其指定为PERSISTED
,这意味着它的值将保存在数据库中,并且只有在其中一个组件的值发生更改时才会更改。
这里的最大好处是数据库将为您处理所有艰苦工作,并且保证唯一性,因为它基于表的主键值。