首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

从Int到bigint的主键更改?

从Int到bigint的主键更改是指将数据库表中的主键字段的数据类型从Int(整型)更改为bigint(大整型)。

在数据库设计中,主键是用来唯一标识表中每一行数据的字段。通常情况下,主键字段的数据类型为Int,它可以存储范围在-2^31到2^31-1之间的整数。然而,在某些情况下,表中的数据量可能非常大,超出了Int类型的范围,这时就需要将主键字段的数据类型更改为bigint。

主键字段从Int到bigint的更改可以通过以下步骤完成:

  1. 首先,备份数据库:在进行任何数据库结构更改之前,建议先备份数据库,以防止意外数据丢失。
  2. 修改表结构:使用ALTER TABLE语句修改表结构,将主键字段的数据类型从Int更改为bigint。例如,如果要更改名为id的主键字段,可以使用以下语句:

ALTER TABLE 表名 MODIFY COLUMN id bigint;

这将修改表名为"表名"的表中名为"id"的字段的数据类型为bigint。

  1. 更新数据:由于数据类型更改,可能需要更新表中已有的数据,以确保数据的完整性和一致性。可以使用UPDATE语句将Int类型的数据转换为bigint类型的数据。

例如,如果要更新名为id的主键字段,可以使用以下语句:

UPDATE 表名 SET id = CAST(id AS bigint);

这将将表名为"表名"的表中名为"id"的字段的数据类型从Int转换为bigint。

  1. 重新创建索引:由于主键字段的数据类型更改,可能需要重新创建索引以提高查询性能。可以使用CREATE INDEX语句重新创建主键索引。

例如,如果主键索引的名称为pk_id,可以使用以下语句重新创建索引:

CREATE INDEX pk_id ON 表名 (id);

这将在表名为"表名"的表中名为"id"的字段上重新创建名为pk_id的主键索引。

完成以上步骤后,主键字段的数据类型就从Int更改为bigint了。

关于主键更改的优势是可以支持更大范围的整数值,适用于数据量较大的表。bigint类型可以存储范围在-2^63到2^63-1之间的整数,远远超过了Int类型的范围。

主键更改后的应用场景包括但不限于以下情况:

  • 数据库中存在大量数据,超出了Int类型的范围。
  • 需要使用主键字段进行数据关联和查询操作。
  • 需要保证主键字段的唯一性和数据完整性。

腾讯云提供了多种云数据库产品,适用于不同的应用场景。具体推荐的产品和产品介绍链接地址可以根据实际需求选择,例如:

请注意,以上链接仅供参考,具体选择应根据实际需求和腾讯云的产品文档进行评估和决策。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

如何将生产环境字段类型INT修改为BIGINT

这是一个订单输入表,由于客户活动,需要24小时插入。一旦强行修改字段必然导致停机。 本文描述了我如何计划和执行INTBIGINT数据类型更改。...这意味着要重新设定INT-1 -2.147 billion 行,这也只是短时间解决问题。不能一劳永逸或者长期作为处理方式。 后来找到一个比较标准方法我比较推荐。...然后,我将新表(PersonNEW)备份恢复staging数据库。 这是一种烟雾测试,以确保相同对象级别恢复,开发到生产将完全按照预期工作。...在验收和生产过程中,流程按照以下步骤进行: 将生产数据库完整数据库备份恢复开发/测试环境。 在还原数据库中,用BIGINT代替INT创建副本表。...这种方法将停机时间可能9小时缩短15分钟,并且大量密集工作都从生产实例中删除了。我没有看到使用对象级恢复对表恢复有多大影响。 总结 有许多方法可以将数据类型更改用于生产数据库。

2.9K10

如何将生产环境字段类型INT修改为BIGINT

这是一个订单输入表,由于客户活动,需要24小时插入。一旦强行修改字段必然导致停机。 本文描述了我如何计划和执行INTBIGINT数据类型更改。...这意味着要重新设定INT-1 -2.147 billion 行,这也只是短时间解决问题。不能一劳永逸或者长期作为处理方式。 后来找到一个比较标准方法我比较推荐。...然后,我将新表(PersonNEW)备份恢复staging数据库。 这是一种烟雾测试,以确保相同对象级别恢复,开发到生产将完全按照预期工作。...在验收和生产过程中,流程按照以下步骤进行: 将生产数据库完整数据库备份恢复开发/测试环境。 在还原数据库中,用BIGINT代替INT创建副本表。...这种方法将停机时间可能9小时缩短15分钟,并且大量密集工作都从生产实例中删除了。我没有看到使用对象级恢复对表恢复有多大影响。 总结 有许多方法可以将数据类型更改用于生产数据库。

4.9K80

mysql中bigintint、mediumint、smallint 和 tinyint取值范围

mysql数据库设计,其中,对于数据性能优化,字段类型考虑很重要,搜集了些资料,整理分享出来,这篇为有关mysql整型bigintint、mediumint、smallint 和 tinyint...语法介绍,如下: 1、bigint -2^63 (-9223372036854775808) 2^63-1 (9223372036854775807) 整型数据(所有数字),无符号范围是...int SQL-92 同义词为 integer。 3、mediumint 一个中等大小整数,有符号范围是-83886088388607,无符号范围是016777215。...5、tinyint 有符号范围是-128 - 127,无符号范围是 0 255 整型数据。一位大小为 1 字节。...或 INTEGER -2147483648 - 2147483647 INT UNSIGNED 或 INTEGER UNSIGNED 0 - 4294967295 BIGINT -

9.4K31

MySQL中intbigint、smallint 和 tinyint区别详细介绍

bigint -2^63 (-9223372036854775808) 2^63-1 (9223372036854775807) 整型数据(所有数字)。存储大小为 8 个字节。...P.S. bigint已经有长度了,在mysql建表中length,只是用于显示位数 int -2^31 (-2,147,483,648) 2^31 – 1 (2,147,483,647...int SQL-92 同义字为 integer。 smallint -2^15 (-32,768) 2^15 – 1 (32,767) 整型数据。存储大小为 2 个字节。...tinyint 0 255 整型数据。存储大小为 1 字节。 TINYINT 型字段如果设置为UNSIGNED类型,只能存储0255整数,不能用来储存负数。...TINYINT 型字段如果不设置UNSIGNED类型,存储-128127整数。 注释 在支持整数值地方支持 bigint 数据类型。

5.2K30

使用 int 和 string 作为主键优劣

然而,在某些场景下,使用字符串(string)作为主键也是可行。本文将分析使用 int 和 string 作为主键优劣,并讨论在实际应用中如何选择合适主键类型。 首先,我们需要了解主键概念。...一、使用 int 作为主键优劣 优点 (1)高性能:整数类型处理速度通常快于字符串类型,因为整数操作计算复杂度更低。在数据库中,使用 int 作为主键可以提高查询和更新效率。...(2)易于管理:使用 int 作为主键可以方便地进行数值范围控制和划分。例如,可以将 int 主键分为不同范围,表示不同用户群体或者产品类型。...例如,如果业务需求中需要处理大量数值类型数据,可以使用 int 作为主键;如果需要处理字符串类型数据,可以使用 string 作为主键。...考虑数据量大小:如果数据量较大,可以使用 int 作为主键,以提高查询和更新效率;如果数据量较小,可以使用 string 作为主键,以提高数据可读性和可操作性。

92250

mysql数据类型intbigint、smallint 和 tinyint取值范围

使用整数数据精确数字数据类型。 bigint -2^63 (-9223372036854775808) 2^63-1 (9223372036854775807) 整型数据(所有数字)。...int -2^31 (-2,147,483,648) 2^31 - 1 (2,147,483,647) 整型数据(所有数字)。存储大小为 4 个字节。...int SQL-92 同义字为 integer。 smallint -2^15 (-32,768) 2^15 - 1 (32,767) 整型数据。存储大小为 2 个字节。...tinyint 0 255 整型数据。存储大小为 1 字节。 注释 在支持整数值地方支持 bigint 数据类型。...但是,bigint 用于某些特殊情况,当整数值超过 int 数据类型支持范围时,就可以采用 bigint。在 SQL Server 中,int 数据类型是主要整数数据类型。

4.1K31

DWORD WORDINT转换

字,16位)   DWORD:无符号四字节整形 (双字,32位) Byte:8位 ---- 解析方式   采用Java位操作来实现(采用大端方式,故先传递高位,则接收方低位为高) //转换DWORD整型数据...private int DWORDtoInt(byte[] sourceArr,int start){ //len=4,inArr为获取到4位Byte数组 byte...sourceArr,start,4); return intArr[0]<<24|intArr[1]<<16|intArr[2]<<8|intArr[3]; } //转换WORD整形数据...private int WORDtoInt(byte[] sourceArr,int start){ //len=2,intArr为获取到2为Byte数组 byte...,相信大家都比较熟悉,但我还是要说明(啰嗦)一下,java里int型是4个字节,即32位,用二进制表示java里1就是000……0001,这些都是有符号数,也就是最高位代表符号位,也就是32位能表示最大整数是

3K10

流数据湖平台Apache Paimon(二)集成 Flink 引擎

ALTER TABLE test ADD b INT AFTER a; 7)更改列位置 ALTER TABLE test MODIFY b INT FIRST; ALTER TABLE test MODIFY...使用复合主键时,查询过滤器最好形成主键最左边前缀,以获得良好加速效果。...如果 Kafka 主题中消息是使用更改数据捕获 (CDC) 工具另一个数据库捕获更改事件,则您可以使用 Paimon Kafka CDC。...(2)更改列类型: 字符串类型(char、varchar、text)更改为长度更长另一种字符串类型, 二进制类型(binary、varbinary、blob)更改为长度更长另一种二进制类型..., 整数类型(tinyint、smallint、intbigint更改为范围更广另一种整数类型, 浮点类型(float、double)更改为范围更宽另一种浮点类型。

1.9K30

聊聊流式数据湖Paimon(一)

Normal Dynamic Bucket Mode 当更新不跨分区(没有分区,或者主键包含所有分区字段)时,动态桶模式使用 HASH 索引来维护从键映射,它比固定桶模式需要更多内存。...Cross Partitions Upsert Dynamic Bucket Mode 当需要跨分区upsert(主键不包含所有分区字段)时,Dynamic Bucket模式直接维护键分区和桶映射,...通过在创建表时指定更改changelog-producer表属性,用户可以选择表文件生成更改模式。...合并更改要求消费者“记住”每个键值并重写这些值而不看到旧值。 然而,一些消费者需要旧值来确保正确性或效率。 考虑一个消费者计算某些分组键总和(可能不等于主键)。...精度不够:如果提供sequence.field不满足精度,比如大约秒或毫秒,可以将sequence.auto-padding设置为秒微或毫秒微,这样序列号精度 将由系统弥补微秒。

77310

SQL约束

CREATE TABLE stu(id INT,VARCHAR(100) NOT NULL); 现在,指定name不能为空,下面来试试,插入一个没有名字记录到表中。 ?...删除该约束以后,我们就可以把一个没有名字记录插入进去了。 在创建表完成之后,加入非空约束。 注意,在创建完成表之后,你如果想加入非空约束,那么就必须保证你更改字段没有NULL值。...CREATE TABLE phone_number(id BIGINT NOT NULL,number INT(11) NOT NULL UNIQUE); 现在,我们来进行插入操作。 ?...注意,在添加唯一之前,应该删除某个字段中重复值,否则无法添加唯一约束。 主键约束 主键约束表示是非空并且唯一。 一张表只能有一个字段为主键主键是表唯一标识。 下面有一张表,并且设置主键。...) 删除主键 ALTER TABLE login DROP PRIMARY KEY; 添加主键 ALTER TABLE login MODIFY id BIGINT PRIMARY KEY; ?

56930

mysql数据库中int类型最大值_mysql自增主键最大值

大家好,又见面了,我是你们朋友全栈君。 1、mysql中int(11)中11代表显示宽度 整数列显示宽度,与mysql需要用多少个字符来显示该列数值,与该整数需要存储空间大小都没有关系。...比如,不管设定了显示宽度是多少个字符,bigint都要占用8个字节。 a、int是整型,(11)是指显示字符宽度,最大为255。...f、INT(3)会占用4个字节存储空间,并且允许最大值也不会是999,而是INT整型所允许最大值。...2、mysql有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INTBIGINT。 a、区别是取值范围不同,存储空间不相同。...b、在整型数据列后加上UNSIGNED属性可以禁止负数,取值0开始。

5.9K20

第17期:索引设计(主键设计)

,这张表缺少一个 old_id 原始表名映射。...以下实验涉及四张表: 新建 t_uuid: uuid 为主键 表 t_binary:varbinary(16) 为主键 表 t_uuid_short:bigint主键 新建表 t_id:自增 ID...为主键 正如之前预期,写性能差异按最差最好排列依次为:t_uuid; t_binary;t_id;t_uuid_short。...,如果在业务端数据已经错误,比如可能由于老师原因录入错误数据,或者是业务系统 BUG 导致录入数据有误, 那不仅要对录入表主键更改(这可是聚簇索引),还要更改依赖这张表所有子表,这其实是一个很大工程...但是如果有与业务不相关主键,只需要更改业务字段(二级索引)就可以,不需要更改依赖这张表子表。 关于 MySQL 主键设计思路大致介绍到此,有问题欢迎留言,欢迎指正本篇任何不足之处。 ----

58910

自打有了GIPKs,DBA和开发再也不用battle了

GIPKs特性简介 MySQL 8.0.30开始,新引入一个叫做GPIKs特性,其全称是 Generated Invisible Primary Keys,简言之就是 自动生成隐含主键列,更完整说法是...:启用GIPKs后,当新建InnoDB表没有显式主键时,会自动创建一个不可见主键列 my_row_id,这个列会被定义为 bigint unsigned NOT NULL AUTO_INCREMENT...上述这两种情况下,都可以GIPKs特性中获益,会自动创建隐含 my_row_id 主键列。...需要注意是,在传统主从复制或MGR架构中,GIPKs特性设置值不会被复制节点,仅影响当前节点。...不过,这完全不影响主从复制或MGR正常工作,也就是说:在主节点上创建无显式定义主键表数据,可以正常复制节点。

16210

自打有了GIPKs,DBA和开发再也不用battle了

GIPKs特性简介 MySQL 8.0.30开始,新引入一个叫做GPIKs特性,其全称是 Generated Invisible Primary Keys,简言之就是 自动生成隐含主键列,更完整说法是...:启用GIPKs后,当新建InnoDB表没有显式主键时,会自动创建一个不可见主键列 my_row_id,这个列会被定义为 bigint unsigned NOT NULL AUTO_INCREMENT...上述这两种情况下,都可以GIPKs特性中获益,会自动创建隐含 my_row_id 主键列。...需要注意是,在传统主从复制或MGR架构中,GIPKs特性设置值不会被复制节点,仅影响当前节点。...不过,这完全不影响主从复制或MGR正常工作,也就是说:在主节点上创建无显式定义主键表数据,可以正常复制节点。

15920

一,构建你持续交付(终):一,易;一,难

或者这么问: 包括持续交付在内工程实践,是普遍被接受并实施么 答案显然是:不是,至少在国内不算是 本篇,一,构建你持续交付最终篇,本系列其它文章为: 一,构建你持续交付流程(一...):一个持续交付流程构思 一,构建你持续交付流程(二):好工程实践是必要前提 一,构建你持续交付流程(三):搭建基于Jenkins+Docker持续交付环境 一,构建你持续交付流程...(四):利用Docker,将服务容器化 一,构建你持续交付流程(五):使用Jenkins Pipeline,让交付流程与自动化 一,构建你持续交付流程(六):让你持续交付闭环 易 持续交付这个实践来说...事实上,自有编程这个行当以来,发展至令也有约近70-80年左右,最开始的卡带编程如今现代语言,少数精英才能完成事情如今虽有一定门槛,但只要稍加学习,基本没人不能用现代语言来编程地步。...无论是管理文化,还是技术文化上,推行类似的做法可能都具有一定挑战与难度。 所以,如果现实角度来看,一,难。

34030

技术译文 | MySQL 添加主键可以节省磁盘空间吗?

如果数据表没有主键,会有许多众所周知负面性能影响,其中最痛苦是复制速度很糟糕。 今天,我想快速说明一下 需要使用主键另一个原因:磁盘空间!...********* Table: test1 Create Table: CREATE TABLE `test1` ( `a` int NOT NULL, `b` bigint DEFAULT...------------------+ | 10000000 | +--------------------+ 1 row in set (5.25 sec) 下面我将把索引类型更改主键...我们拥有完全相同数据,并且在两种情况下都对两列都建立了索引!让我们检查一下更改前后该表更多详细信息。...因此,显式主键始终是更好解决方案。 但是,如果由于遗留应用程序问题而无法添加新主键列,建议使用不可见主键(GIPK)来当作主键。这样,您将获得性能优势,同时对应用程序是不可见

8210

sql server时间戳timestamp

每次插入或更新包含 timestamp 列行时,timestamp 列中值均会更新。这一属性使 timestamp 列不适合作为键使用,尤其是不能作为主键使用。...对行任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧键值将无效,进而引用该旧值外键也将不再有效。如果该表在动态游标中引用,则所有更新均会更改游标中行位置。...对行任何更新都会更改 timestamp 值,从而更改键值。如果该列属于主键,那么旧键值将无效,进而引用该旧值外键也将不再有效。 如果该表在动态游标中引用,则所有更新均会更改游标中行位置。...如果该列属于索引键,则对数据行所有更新还将导致索引更新。 使用某一行中 timestamp 列可以很容易地确定该行中任何值自上次读取以后是否发生了更改。如果对行进行了更改,就会更新该时间戳值。...' ,CONVERT(BIGINT,TS) AS 'timestamp转bigint类型' FROM tb_Ts 总而言之,记住两点: 1、timespan列不允许显示插入及更新该字段,该字段会自动更新

7710
领券