我有主键唯一列ID nchar(10)。我打算用它来生成数字ID。增量订单没问题,但没有必要。如何为此制造出最佳的发电机?我应该使用存储过程吗?也许MS SQL服务器出于这个原因有任何功能?
答案 0 :(得分:1)
将PkStudentid宣布为INT
CREATE TABLE Student
(
Studentid int IDENTITY (1, 1) NOT NULL PRIMARY KEY,
Firstname nvarchar (200) NULL,
Lastname nvarchar (200),
Email nvarchar (100) NULL
)
insert into Student (Firstname,Lastname,Email)
Values('Vivek', 'Johari', ‘vivekjohari@abc.com');
SET @PkStudentid = SCOPE_IDENTITY();
print @PkStudentid
这会将Studentid插入1和下一个条目2并按增量顺序插入。
您需要在SQL Server中使用IDENTITY property。
已编辑:在SQL Server中使用SCOPE_IDENTITY以获取最新插入的Studentid。
答案 1 :(得分:1)
对于主键列,您必须使用插入了IDENTITY的INT列。
替代解决方案:
如果您不想使用INT数据类型,则替代解决方案是创建具有默认值LEFT(NEWID(), 10)
的列,其上带有UNIQUE / PRIMARY KEY。因为NEWID()
函数每次都会生成不同的随机字符串。
例如:
SELECT LEFT(REPLACE(NEWID(),'-',''),(10))
上面的查询会给出不同的随机字符串。
<强>输出强>
| ID | NAME |
|------------|------|
| 482E5D4850 | pqr |
| 70369ED157 | abc |
| 768CC98442 | xyz |
答案 2 :(得分:0)
ID int IDENTITY (1, 1) NOT NULL PRIMARY KEY
使用MS SQL中的IDENTITY属性和PRIMARY KEY的唯一性。
Identity
列可用于生成键值。列上的标识属性保证以下内容: