oracle12虚拟列,ORACLE-1:虚拟列影响alter修改表字段操作!

2024-02-13 06:20

本文主要是介绍oracle12虚拟列,ORACLE-1:虚拟列影响alter修改表字段操作!,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、问题:

昨天想要修改Oracle数据库中某张表的某个字段,发现怎么都修改不成功!!!并给出了如下提示:

ORA-54031:要删除或修改的列由某个虚拟列表达式使用

二、啥是“虚拟列” 【不可见的列】

虚拟列的创建一般是数据库自动创建的,当然也可以手动创建。

什么时候创建:表中的数据,大量或频繁的发生变化的时候,数据库一般会自动创建虚拟列!

我觉得截一个漂亮的图,比我的一个字一个字的敲的更容易理解!哈哈哈!

ed8770c6efb5faa0e225c3e8201c77d9.png

Oralce 的虚拟列解决了以前很多需要使用触发器或者需要通过代码进行计算统计才能产生的数据信息。以前每次对其他的列进行统计,产生新列的时候都是采用在select 语句中通过统计计算增加新列的方法,执行效率很低,而且由于使查询SQL语句变得冗长、复杂很容易出错。严重的降低了开发效率和程序的执行效率。Oralce虚拟列的引入解决了这个问题。

Oralce 的虚拟列也有一些问题。不能使用insert into talbe_name values ().语句,在向含有虚拟列的表中添加数据时,要求insert语句的必须把添加的表的列名写出来。insert into table_name (list1,list2,...listend)列名中不能出现虚拟列名,否则会提示错误。

下面罗列一下解决方案:

二、几种解决方案

(1)先备份数据,备份表结构,再delete该表,再创建表(修改列信息),再导入数据!

数据量少的时候,无所谓,可以这么做,但是如果数据量过多,那么弊端就很明显了!

(2)drop当前虚拟列。流程如下:

1 --:查询指定表的虚拟列信息:2 --select column_name,data_default,hidden_column3 --from user_tab_cols4 --where table_name=‘CB_BATCH_FLOW‘ AND column_name=‘BFL_OPRNO‘

5

6 --说明:修改步骤:7 --(1)先查询user_tab_cols表.列的虚拟列data_default字段的信息,取其中的HASH值8 --(2)如果(1)查到了HASH值,才需要执行exec 删除该列的虚拟列操作,如果没有查找HASH值,则不需要删除虚拟列9 --(3)删除虚拟列之后,此时可以alter10 --格式:11 -- exec dbms_stats.drop_extended_stats(‘ebank‘,‘CB_BATCH_FLOW‘,‘BFL_CSTNO,CCP_USERID)‘); ---删除虚拟列12 -- alter table CB_BATCH_FLOW modify BFL_CSTNO varchar2(10);                         ---修改列信息13 -- select dbms_stats.create_extended_stats(‘ebank‘,‘CB_BATCH_FLOW‘,‘(CCP_CSTNO,CCP_USERID)‘) FROM DUAL; ---新增虚拟列

执行截图:

1、exec  执行方法参数传入错误

9f8d012a65e20b1d503d057eac9b8bb2.png

2、成功删除虚拟列

8b1de3bb5e3e634c3504d82bd82481e6.png

3、成功创建一个虚拟列

0a64a18587fc554b77c32faf21012ab8.png

但是,成功创建的虚拟列的在:user_tab_cols表中的COLUMN_NAME字段存入的值是随机的,

4ec48f6b7edcdfab149af164e117f6de.png

原文:https://www.cnblogs.com/newwind/p/9096709.html

这篇关于oracle12虚拟列,ORACLE-1:虚拟列影响alter修改表字段操作!的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/704705

相关文章

SWAP作物生长模型安装教程、数据制备、敏感性分析、气候变化影响、R模型敏感性分析与贝叶斯优化、Fortran源代码分析、气候数据降尺度与变化影响分析

查看原文>>>全流程SWAP农业模型数据制备、敏感性分析及气候变化影响实践技术应用 SWAP模型是由荷兰瓦赫宁根大学开发的先进农作物模型,它综合考虑了土壤-水分-大气以及植被间的相互作用;是一种描述作物生长过程的一种机理性作物生长模型。它不但运用Richard方程,使其能够精确的模拟土壤中水分的运动,而且耦合了WOFOST作物模型使作物的生长描述更为科学。 本文让更多的科研人员和农业工作者

两个月冲刺软考——访问位与修改位的题型(淘汰哪一页);内聚的类型;关于码制的知识点;地址映射的相关内容

1.访问位与修改位的题型(淘汰哪一页) 访问位:为1时表示在内存期间被访问过,为0时表示未被访问;修改位:为1时表示该页面自从被装入内存后被修改过,为0时表示未修改过。 置换页面时,最先置换访问位和修改位为00的,其次是01(没被访问但被修改过)的,之后是10(被访问了但没被修改过),最后是11。 2.内聚的类型 功能内聚:完成一个单一功能,各个部分协同工作,缺一不可。 顺序内聚:

如何在运行时修改serialVersionUID

优质博文:IT-BLOG-CN 问题 我正在使用第三方库连接到外部系统,一切运行正常,但突然出现序列化错误 java.io.InvalidClassException: com.essbase.api.base.EssException; local class incompatible: stream classdesc serialVersionUID = 90314637791991

Oracle type (自定义类型的使用)

oracle - type   type定义: oracle中自定义数据类型 oracle中有基本的数据类型,如number,varchar2,date,numeric,float....但有时候我们需要特殊的格式, 如将name定义为(firstname,lastname)的形式,我们想把这个作为一个表的一列看待,这时候就要我们自己定义一个数据类型 格式 :create or repla

ORACLE 11g 创建数据库时 Enterprise Manager配置失败的解决办法 无法打开OEM的解决办法

在win7 64位系统下安装oracle11g,在使用Database configuration Assistant创建数据库时,在创建到85%的时候报错,错误如下: 解决办法: 在listener.ora中增加对BlueAeri-PC或ip地址的侦听,具体步骤如下: 1.启动Net Manager,在“监听程序”--Listener下添加一个地址,主机名写计

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

Oracle Start With关键字

Oracle Start With关键字 前言 旨在记录一些Oracle使用中遇到的各种各样的问题. 同时希望能帮到和我遇到同样问题的人. Start With (树查询) 问题描述: 在数据库中, 有一种比较常见得 设计模式, 层级结构 设计模式, 具体到 Oracle table中, 字段特点如下: ID, DSC, PID; 三个字段, 分别表示 当前标识的 ID(主键), DSC 当

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

oracle分页和mysql分页

mysql 分页 --查前5 数据select * from table_name limit 0,5 select * from table_name limit 5 --limit关键字的用法:LIMIT [offset,] rows--offset指定要返回的第一行的偏移量,rows第二个指定返回行的最大数目。初始行的偏移量是0(不是1)。   oracle 分页 --查前1-9