这个问题在这里已有答案:
我的Microsoft SQL Server数据库当前已连接到我的ASP.NET应用程序。我的数据库中有一个UserID
列,我想让它在用户在应用程序中注册新帐户时生成唯一的ID号。但是UserID
是主键并且有int
数据类型,我不知道该怎么做。
我想用这个序言生成ID
"OAS" + "Any 4 random numbers"
等OAS4432
这是到目前为止存储过程的代码
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER PROCEDURE [dbo].[UserAdd]
@StudentName VARCHAR(50),
@SchoolName VARCHAR(50),
@HouseName VARCHAR(50),
@Prog VARCHAR(50),
@PhoneNumber VARCHAR(50),
@Address VARCHAR(250),
@Password VARCHAR(50)
AS
INSERT INTO tblSignUp (StudentName, SchoolName, HouseName, Prog, PhoneNumber, Address, Password)
VALUES (@StudentName, @SchoolName, @HouseName, @Prog, @PhoneNumber, @Address, @Password)
你可以有两个Id。一个是自动生成的主键,作为名为Id的INT类型,另一个是作为UsedId的varchar(10)。您可以根据逻辑生成UserId并插入UserId字段,Id将自动递增。
步骤1:使用自动增量添加名为Id的新列作为主键:
ALTER TABLE tblSignUp
ADD Id INT IDENTITY
CONSTRAINT PK_tblSignUp PRIMARY KEY CLUSTERED
第2步:为UserId添加一个新列作为varchar(10)
ALTER TABLE tblSignUp
ADD UserId VARCHAR(10)
第3步:更新存储过程
ALTER PROC [dbo].[UserAdd]
@UserId varchar(10),
@StudentName varchar(50),
@SchoolName varchar(50),
@HouseName varchar(50),
@Prog varchar(50),
@PhoneNumber varchar(50),
@Address varchar(250),
@Password varchar(50)
AS
INSERT INTO tblSignUp(UserId,StudentName,SchoolName,HouseName,Prog,PhoneNumber,Address,Password)
VALUES (@UserId,@StudentName,@SchoolName,@HouseName,@Prog,@PhoneNumber,@Address,@Password)
你不能这样做,Integers是数字,而不是字母数字。您可以使用varchar / nvarchar创建一个像OAS4432
这样的ID。
您可以更改表并更改ID的数据类型
ALTER TABLE <schemaName>.<tableName>
ALTER COLUMN <columnName> nvarchar(200) [NULL|NOT NULL]
或者仍将ID作为INT存储,使用列作为主键,但在此情况下还有另一列同时加入ID和后缀“OAS”。
只是一个注释,SSMS == SQL Server Management Studio。它没有定义您的数据库,它只是一个访问和管理您的实例/数据库的集成环境。
保留“OAS”+“任意4个随机数”的方案将限制最大学生人数为10000(QAS0000至QAS9999)请考虑到这一点。