SQL主键唯一ID号

时间:2019-03-10 00:00:45

标签: c# sql sql-server wpf ssms

我的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)

3 个答案:

答案 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) 请考虑到这一点。