我的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)
答案 0 :(得分:2)
您可以有两个ID。一个是自动生成的主键,它是名为Id的INT类型,另一个是varchar(10),它是UsedId。您可以根据逻辑生成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)
答案 1 :(得分:0)
您不能这样做,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。它并没有定义您的数据库,它只是一个用于访问和管理您的实例/数据库的集成环境。
答案 2 :(得分:0)
您的保管计划 “ OAS” +“任意4个随机数” 会将学生人数上限限制为10000(QAS0000至QAS9999) 请考虑到这一点。