Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/86.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用NVARCHAR序列更新主键_Sql_Sql Server_Primary Key - Fatal编程技术网

Sql 使用NVARCHAR序列更新主键

Sql 使用NVARCHAR序列更新主键,sql,sql-server,primary-key,Sql,Sql Server,Primary Key,我有一个Microsoft SQL Server 2012数据库,其中有一个名为Lineitem的表。此表有一个主键字段code,当前有超过1000000行 我需要用一个NVARCHAR来更新主键,该NVARCHAR从Li000000001开始,并且像这样递增Li000000002,Li000000003等 技术上如何做到这一点?最好的解决方案是使用: 一个ID INT-IDENTITY(1,1)列,用于让SQL Server处理数值的自动递增(->这可能是您现有的code列) 一个计算的、持

我有一个Microsoft SQL Server 2012数据库,其中有一个名为
Lineitem
的表。此表有一个主键字段
code
,当前有超过1000000行

我需要用一个NVARCHAR来更新主键,该NVARCHAR从
Li000000001
开始,并且像这样递增
Li000000002
Li000000003


技术上如何做到这一点?最好的解决方案是使用:

  • 一个
    ID INT-IDENTITY(1,1)
    列,用于让SQL Server处理数值的自动递增(->这可能是您现有的
    code
    列)

  • 一个计算的、持久的列,用于将该数值转换为所需的值

所以试试这个:

ALTER TABLE dbo.LineItem
ADD AlphaCode AS N'Li' + RIGHT('000000000' + CAST(ID AS NVARCHAR(9)), 9) PERSISTED

现在,每次在
行项目中插入一行时,SQL Server都会自动增加
代码
值(到目前为止),并且
字母代码
将包含类似
Li000000001
Li000000002
,。。。。。。等等-自动、安全、可靠、无重复。

可能需要特定于技术的解决方案,请添加您正在使用的标签(MySQL、MSSQL、Oracle等)。“…行数超过1000000。”--超过1000000什么?柱?字节?石头?小猫?你的问题不清楚。它包括一个,即模式为
CREATE TABLE
语句,样本数据为
INSERT-in
语句,以及该样本数据的预期结果。同时标记您正在使用的数据库管理系统,以及您迄今为止尝试的内容,以及问题所在。我使用的是Microsoft SQL 2012。行表示我的表“LineItem”中已存在的记录。该表有12列,代码、凭证、物品、单位数量、数量、计量单位、合计金额、应纳税金额、税金、应纳税金额、计算成本、备注。代码是按顺序更新为新值的主键,如Li000000001、Li000000002…@AyalewDerese,编辑您的问题,添加必要的详细信息。不要对此使用评论。