KingbaseES如何更改现有表的主键
2024-09-01 02:26:21
更改主键
假设您必须更改现有表的主键。您可以通过执行以下语句来实现此目的:
ALTER TABLE tablename
DROP CONSTRAINT tablename_pkey ,
ADD PRIMARY KEY (column_newkey);
如果主键在其他表中用作外键,则可以添加该关键字。这将自动删除依赖于主键的任何外键:CASCADE
ALTER TABLE tablename
DROP CONSTRAINT tablename_pkey CASCADE,
ADD PRIMARY KEY (column_newkey);
当然,在此之后,您仍然必须重新创建已删除的外键。
默认情况下,KingbaseES还会为每个主键创建并维护一个索引。
安全地更改主键
如果您需要在KingbaseES数据库中的大型表(约1亿条记录)上更改主键列。不能锁定表,因为这是高度事务性的数据库,不能阻止表上的 DML 语句的情况下,安全地更改主键的正确方法是什么?
您可以并发创建唯一索引,在创建索引时,选项concurrently
允许对表进行读取和写入访问。但是,并发构建索引比没有该选项,将花费更长的时间。
create unique index concurrently tablename_column_newkey on tablename (column_newkey);
创建索引后,可以将其用作主键:
alter table tablename
add primary key using index tablename_column_newkey;
这只会在很短的时间内锁定表。
最后,修改主键索引名称,
alter index tablename_column_newkey rename to tablename_pkey;
使用默认名称,便于识别表、约束和唯一索引之间的关系。
查看约束外键
要查看哪些外键指向有问题的特定表,您可以顺便使用以下语句:
SELECT tc.table_schema,
tc.constraint_name,
tc.table_name,
kcu.column_name,
ccu.table_schema AS foreign_table_schema,
ccu.table_name AS foreign_table_name,
ccu.column_name AS foreign_column_name
FROM information_schema.table_constraints AS tc
JOIN information_schema.key_column_usage AS kcu
ON tc.constraint_name = kcu.constraint_name
AND tc.table_schema = kcu.table_schema
JOIN information_schema.constraint_column_usage AS ccu
ON ccu.constraint_name = tc.constraint_name
AND ccu.table_schema = tc.table_schema
WHERE tc.constraint_type = 'FOREIGN KEY'
AND ccu.table_name = 'tablename';
最新文章
- 【多线程】JAVA多线程和并发基础面试问答(转载)
- sql 更新重复数据只取一条记录
- 总结源码编译安装mysql
- 自定义 select 下拉菜单
- Linux设置日期
- 【转】 Ubuntu下配置USB转串口及串口工具配置--不错
- [Android学习笔记]Android调试
- C语言编码风格_集锦_1
- Eclipse导入项目常见问题----jdk版本问题(有个红色感叹号)01
- css伪类的说明以及使用(css事件)
- SLAM入门之视觉里程计(2):两视图对极约束 基础矩阵
- 手把手教你 LabVIEW 串口仪器控制——VISA 驱动下载安装篇
- Mybatis框架四:输入参数、输出参数
- 使用CSS选择器定位页面元素
- 漏洞利用查询工具sandi
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
- Python模块Pygame安装
- GreenPlum学习笔记:基础知识
- 关于 webpack 跨域
- B+树全面解析
热门文章
- Modeling Conversation Structure and Temporal Dynamics for Jointly Predicting Rumor Stance and Veracity(ACL-19)
- 项目git commit时卡主不良代码:husky让Git检查代码规范化工作
- APISpace 未来7天生活指数API接口 免费好用
- 4-7 CS后台项目练习-1
- 【中国象棋人机对战】引入了AI算法,学习低代码和高代码如何混编并互相调用
- 第k小 来源:牛客网
- Vue中computed用法
- Vue 基本列表 &;&; 数据过滤与排序
- 【Java面试】生产环境服务器变慢,如何诊断处理?
- vue中vuex实现持久化的几种方法