SQL主键唯一ID号[重复]

问题描述 投票:-1回答:3

这个问题在这里已有答案:

我的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)
c# sql sql-server wpf ssms
3个回答
2
投票

你可以有两个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)

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。它没有定义您的数据库,它只是一个访问和管理您的实例/数据库的集成环境。


0
投票

保留“OAS”+“任意4个随机数”的方案将限制最大学生人数为10000(QAS0000至QAS9999)请考虑到这一点。

© www.soinside.com 2019 - 2024. All rights reserved.