sql - 在增量列中编辑 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 = 1
值data_id = 10
。但是怎么做?
提前致谢
解决方案
对于您的问题,我想与您分享一些事情:
- 您无法更改主键列值,因为您将自动递增 1。请参阅标识的概念:SQL 中的 (1,1) 是什么意思?
第一个 1 表示列的起始值,第二个 1 表示列的增量值
不要将 SQL Server 保留字
empty
用于您自己的数据库对象(如表)不推荐,但您仍想修改,然后尝试此操作,使用值添加新行并删除行(如何更新 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]
推荐阅读
- c++ - 保留时通过实现定义的因素强制增加向量容量
- java - Cors 错误曾经在 Heroku 中部署 Angular 和 SpringBoot 应用程序
- python - 解包列表项中的字符串文字有效,但不适用于字符串文字本身
- c++ - 大括号初始化和复制初始化动态分配的对象之间的区别
- mongodb - 尝试按字母顺序排序时,mongodb排序功能不起作用
- pyspark - 将 Pyspark Dataframe 中的推断模式持久保存到 S3 上的文件
- javascript - 从javascript中的数组中过滤掉不重复的值
- version-control - XCode 12 裁剪分支名称
- javascript - Javascript loop through an array and return the object(s) that end a streak of values
- ios - 如何在 MLMultiarray 元素上应用 Sigmoid?