首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Oracle 11g:向具有自动增量长值的现有表中添加列

Oracle 11g:向具有自动增量长值的现有表中添加列
EN

Stack Overflow用户
提问于 2017-01-06 01:00:28
回答 3查看 2.5K关注 0票数 0

我有一个表,比如名称(我简化了示例,以求简单)。此表已经存在,并具有数据。现在,我需要向它添加一个long类型的ID列,并且需要使值自动递增。

对于Oracle 12c,这是很容易的,因为生成总是作为标识。

但是,我在Oracle 11g上工作,不支持这样的特性。因此,我需要创建一个触发器,如本文所述:INCREMENT on Oracle?

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter table name add (id integer);

create sequence name_seq;

create or replace trigger name_bir;   
before insert on name
for each row
begin
 select name_seq.NEXTVAL
 into :new.id
 from dual;
end;

但是,该解决方案(创建序列,然后在Insert/Update上设置触发器)仅在插入新行时才能工作。它不适用于表中现有的行。

如果有任何建议我会很感激的。基本上,我需要现有的newly-inserted行和行为新添加的列ID提供新的ID值。

=============================

解决方案(从答复中收集):

  1. 使用"a_horse_with_no_name“发布的" update”语句更新现有行
  2. 对于要插入的任何新行,仍然需要上面的触发器。
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-06 02:14:32

创建序列之后,只需更新现有行:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
alter table name add (id integer);

create sequence name_seq;

update name 
  set id = name_seq.nextval;
commit;

不需要PL/SQL或循环中缓慢和高效的逐行处理。

无关的,但是:触发器中的分配可以简化为:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
:new.id := name_seq.NEXTVAL;

不需要select .. from dual

票数 4
EN

Stack Overflow用户

发布于 2017-01-06 02:16:57

如前所述,在添加ID列并创建NAME_SEQ序列之后,使用循环更容易的选项是使用更新语句,如下所示:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
update NAME set ID= NAME_SEQ.nextval ;
票数 -1
EN

Stack Overflow用户

发布于 2017-01-06 01:32:21

这应该能起作用

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
BEGIN
alter table name add (id integer);
create sequence name_seq;

FOR REC IN (SELECT * FROM NAME) LOOP
UPDATE NAME SET ID = NAME_SEQ.NEXTVAL 
WHERE ROWID = REC.ROWID;
END LOOP;
END;
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41502140

复制
相关文章
批量运行多个R脚本
如果把这些R代码文件一个个打开,然后一个个运行,工作量也不小,所以我们推荐一个技巧:
生信技能树
2022/07/26
1.9K0
批量运行多个R脚本
Autowired实现多个实现类
# Autowired实现多个实现类 @Autowired 如何实现多个实现类 # 解决方案 @Service("a") public class AService implements Service {} @Service("b") public class BService implements Service { @Qualifier("a") @Autowired Service aService; @Qualifier("b") @Autowired Service bService;
taixingyiji
2022/07/25
6950
「R」R 的属性和类
属性描述了对象所代表的内容以及R解释该对象的方式。很多时候两个对象之间的唯一差别就在于它们的属性不同。下表展示了一些重要的属性。很多常见的属性都是针对常见的数值型数据对象而言的:像数组、矩阵和数据框。
王诗翔呀
2020/07/02
1.2K0
R可视化 | 混合多个图形
gridExtra包让混合多个图片变得轻而易举。它提供了grid.arrange() 函数来完成 这个任务。它的nrow参数允许指定如何安排布局。
朱小五
2020/09/07
1.4K0
R可视化 | 混合多个图形
Conda管理多个版本的R, python
Conda是一个非常好用的工具,既可以管理packages,也可以管理和下载软件,还可以建立多个虚拟环境来独立运行多个版本的软件。conda分为anaconda和miniconda。anaconda是包含一些常用包,miniconda是精简版。做生信常常用的一些包只支持老版本的R,一些新开发的包又只支持最新的R,这里我们用conda建立多个版本的R环境。 conda的安装: 下载地址:https://www.anaconda.com/distribution/ https://docs.anaconda.com/anaconda/install/
生信编程日常
2020/04/01
4.8K0
Conda管理多个版本的R, python
Java对象级别与类级别的同步锁
Java synchronized 关键字 可以将一个代码块或一个方法标记为同步代码块。同步代码块是指同一时间只能有一个线程执行的代码,并且执行该代码的线程持有同步锁。synchronized关键字可以作用于
字母哥博客
2021/04/28
1.4K0
Java对象级别与类级别的同步锁
java中类中多个Synchronized方法
下面给出一个例子,说明一个class中有两个方法synchronized的情况。它们互相阻挡的用法和上面的“一个方法有synchronized”的情况是一样的。
马克java社区
2021/04/23
9050
java中类中多个Synchronized方法
R聚类算法-层次聚类算法
本文介绍了层次聚类算法的基本概念、原理、方法和应用。层次聚类算法是一种基于树形结构的聚类方法,包括距离矩阵计算、数据转换、聚类树构建和剪枝等步骤。该算法可以自动处理大规模数据集,但计算量较大,且结果不稳定。在实际应用中,需要根据数据特点和需求选择合适的聚类算法。
Erin
2018/01/09
1.6K0
多个jvm实例_java类的实例
我们知道,一个对象在可以被使用之前必须要被正确地实例化。而实例化实际指的就是以一个java类为模板创建对象/实例的过程。比如说常见的 Person = new Person()代码就是一个将Person类实例化并创建引用的过程。
全栈程序员站长
2022/09/23
1.9K0
多个jvm实例_java类的实例
R语言之生信(9)R语言多个生存分析曲线比较
====================================== 这篇博客的目的主要是计算当需要计算多个不同组之间的成对比较,并计算P值。
用户1359560
2019/03/22
5.9K0
python 查找多个目录下的最大Python文件 脚本
""" Find the largest Python source file on the module import search path. Skip already-visited directories, normalize path and case so they will match properly, and include line counts in pprinted result. It's not enough to use os.environ['PYTHONPATH']: this is a subset of sys.path. """
用户5760343
2022/05/13
1.1K0
在单机上快速、精确的100000类别的检测
今天带来的这篇推送,估计您有读过或试验过,但是为了让更多的科研学者知道这么“牛”的内容知识,接下来就开始说说今天的主题——1000000类的快速精确检测。 注:内容选于dengyafeng的博客 ---- 今天的主题最引起关注的是“1000000类”,比Base Line快了将近2000倍。但是任何一个好的东西都会有美中不足之处,之后我们在讨论其缺陷。 今天说的这个模型主要优势在于速度快,具体就是对于多类检测问题,检测速度可以做到和类别数目无关。 对于包含C类的物体检测而言,一个基本的框架是,训练C个分类器
计算机视觉研究院
2018/04/17
8000
在单机上快速、精确的100000类别的检测
「R」层次聚类和非层次聚类
在这个分析中,我们将看到如何创建层次聚类模型。目的是探索数据库中是否存在相似性组,并查看它们的行为。
王诗翔呀
2022/01/21
1.5K0
「R」层次聚类和非层次聚类
R包ggsci:一步完成CNS级别的图片配色
最近在修图,遇到的问题就是,往往我自己认为配色很不错,一旦发到老板手上,就会被无情的打回,让我换一个新的配色。直到前几天,我搜到一个非常不错的R包“ggsci”,终于完美地解决了我的问题,制作出了让老板满意的配图。今天的推文,就和大家简单谈谈这个好用的工具。
生信菜鸟团
2020/07/17
3.7K0
R语言多个样本均数的多重比较
对于多个样本均数的多重比较,比较常用的是LSD-t,SNK,Dunnett,Tukey等,这些方法在之前的推文中介绍过。
医学和生信笔记
2022/11/15
1.1K0
R语言多个样本均数的多重比较
R聚类算法-DBSCAN算法
DBSCAN算法(Density-Based Spatial Clustering of Application with Noise)密度聚类算法 基于密度的聚类算法,K-means和层次聚类对于球状的簇聚类效果很好,DBSCAN可以用于更多复杂形状簇的聚类。
Erin
2022/05/09
6480
R聚类算法-DBSCAN算法
批量运行多个R脚本并打印运行状态
曾老师曾经有一篇推文《批量运行多个R脚本》,介绍了批量运行R脚本的思路,同时也提出了一些问题,今天就这个学徒作业,我们来探究一下。
小汪Waud
2023/02/20
9330
批量运行多个R脚本并打印运行状态
C# 直接创建多个类和使用反射创建类的性能
虽然一开始就知道了反射的性能比较差,但是究竟有多差,在创建对象的时候的差异有多少?
林德熙
2019/03/13
2.4K0
C# 直接创建多个类和使用反射创建类的性能
RISynG:用于癌症亚型识别的新型多组学聚类算法
癌症亚型识别是推进个性化抗癌治疗的关键步骤之一。然而目前从多组学数据中识别最相关的特征并系统地整合它们仍然存在局限性。近日,《Scientific Reports》发表了一种名为 RISynG的新型多组学聚类算法,可有效识别癌症亚型,并通过基准测试证明了RISynG优于该领域的其他方法。
尐尐呅
2022/10/14
4080
RISynG:用于癌症亚型识别的新型多组学聚类算法
点击加载更多

相似问题

使用多个级别的多个类选择DIV

21

R-求多个最大值

25

生成R中具有多个级别的虚拟变量

26

R中多个日期的最大日期

22

如何在R中使用循环返回每个类别的最大值?

20
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文