Concat字符串和DB列值的int值

时间:2015-11-17 08:58:28

标签: sql-server database

我有一个表,其中有一个用于存储用户名的列。我把它作为格式user1,user2,user3的strchar(它不是由用户插入,自动它应该生成)所以为此我需要获取用户的max int值然后将其递增1并用字符串附加它用户并将其存储到下一行。

2 个答案:

答案 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,这意味着它的值将保存在数据库中,并且只有在其中一个组件的值发生更改时才会更改。

这里的最大好处是数据库将为您处理所有艰苦工作,并且保证唯一性,因为它基于表的主键值。