首页 > 解决方案 > 在增量列中编辑 SQL 内容

问题描述

这是我的桌子:

create table empty 
(
    data_id int identity(1,1),
    emp_name varchar(20),
    address varchar(20),
    city varchar(20)
)

这是表中的数据:

data_id   emp_name      address        city 
---------------------------------------------
1         ritesh        210 b_block     sivapur
2         pritma        visvaas khand   lucknow
3         rakesh        nehru nagar     delhi

我想改变 to 的data_id = 1data_id = 10。但是怎么做?

提前致谢

在此处输入图像描述

标签: sqlsql-server

解决方案


对于您的问题,我想与您分享一些事情:

  1. 您无法更改主键列值,因为您将自动递增 1。请参阅标识的概念:SQL 中的 (1,1) 是什么意思?

第一个 1 表示列的起始值,第二个 1 表示列的增量值

  1. 不要将 SQL Server 保留字empty用于您自己的数据库对象(如表)

  2. 不推荐,但您仍想修改,然后尝试此操作,使用值添加新行并删除行(如何更新 SQL Server 中的标识列?))

您不能更新标识列。SQL Server 不允许更新标识列,这与您可以使用更新语句对其他列执行的操作不同。

   --create table empty 
   --(
   --    data_id int identity(1,1),
   --    emp_name varchar(20),
   --    address varchar(20),
   --    city varchar(20)
   --)
   
   --select * from empty
   --Insert into empty values
   --('ritesh','210 b_block','sivapur'),
   --('pritma','visvaas khand','lucknow'),
   --('rakesh','nehru nagar','delhi')
   
   select * from empty

   SET IDENTITY_INSERT [empty] ON;

   --give error as we do not change the auto increment column, so comment and then run
   --update [empty] 
   --set data_id = 10 where data_id = 1;

   INSERT INTO [empty] (data_id, emp_name, address, city)
       SELECT 10 data_id, emp_name, address, city 
       FROM [empty]  
       WHERE data_id = 1;

   SELECT * FROM [empty] 

   DELETE [empty] 
   WHERE data_id = 1;

   SET IDENTITY_INSERT [empty] OFF;

   SELECT * FROM [empty] 
 

推荐阅读