【问题标题】:Edit SQL content in increment column在增量列中编辑 SQL 内容
【发布时间】:2021-06-29 04:58:44
【问题描述】:

这是我的桌子:

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

我想将data_id = 1 的值更改为data_id = 10。但是怎么做呢?

提前致谢

【问题讨论】:

  • 根据问题指南,请不要发布代码、数据、错误消息等的图像 - 将文本复制或输入到问题中。请保留将图像用于图表或演示渲染错误,无法通过文本准确描述的事情。

标签: sql sql-server


【解决方案1】:

针对您的问题,我想与您分享一些内容:

  1. 你不能改变主键列的值,因为你给了自动增量 1。请参阅标识的概念:What does (1,1) mean in SQL?

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

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

  2. 不推荐,但你仍然想修改,然后试试这个,添加带有值的新行并删除行 (How to update Identity Column in 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] 
 

【讨论】:

    【解决方案2】:

    您可能不应该希望这样做,因为您的data_id 身份列已经保证具有唯一值。手动将一条记录更新为另一个值可能会破坏合同。话虽如此,如果你必须这样做,你只需要一个简单的更新:

    UPDATE empty
    SET data_id = 10
    WHERE data_id = 1;
    

    【讨论】:

    • 你能再给我一个建议吗..我已经更新了我的问题..我使用了你的建议但无法完成..请看一下
    【解决方案3】:

    您应该尝试重命名表格,而不是像此处显示的那样为空

    【讨论】:

    • Msg 8102,级别 16,状态 1,行 1 无法更新标识列“data_id”。这个错误出来
    • 您是否更新了表名?我可以看到您的创建查询和更新查询吗?
    猜你喜欢
    • 2019-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-09
    • 1970-01-01
    • 1970-01-01
    • 2013-03-05
    • 1970-01-01
    相关资源
    最近更新 更多