• 列的维护


    一、重命名列

    alter table schema.table_name

      rename column old_name_column

      to new_name_column

    修改列名称是有限制的,如果在该列上建有索引,那么该列的列名称就不能修改。如果想要修改就必须删除该列上的索引,对于主键索引尽量避免修改主键列名称。

    另外修改表中一列的列名称后,基于该表建立的视图,触发器,函数,过程,软件包都将失效,因此需要重新编译。对于大型是数据库修改列名称的代价是很高的,尽量避免修改列名称。

    二、删除列

    alter table schema.table_name

      drop column column_name

      cascade constraints checkpoint  行数

    alter语句是ddl语句直接修改数据字典,故删除列后是无法恢复的

    删除一列后,表中至少应该还有一列

    在一个大型的数据库中删除一列数据时非常耗时的,并且需要很大的还原空间。这对数据库系统的效率的冲击是很大的,所以应该避免在系统繁忙时执行删除列的ddl语句

    通过在以上ddl语句中使用checkpoint 行数  可以减少还原磁盘空间的使用量。

    checkpoint 500

    在oracle执行以上命令后每执行500次的操作就会产生一个检查点,如果在执行以上命令期间系统崩溃了,当重启系统后该命令可以从检查点继续执行工作,不必重新开始。

    其命令格式如下:

    alter table schema.table_name drop columns continue;

    为避免在系统繁忙时执行删除类的命令,可以使用set unused子句,把表中的某一列置为无用

    alter table schema.table_name set unused column_name cascade constraints;

    该语句是ddl语句一旦设置为无用的列就无法再恢复啦

    当数据库空闲时使用一下ddl语句删除无用的列:

    alter table schema.table_name

      drop unused columns checkpoint 行数

    如果执行期间系统崩溃,那么重启后不必从开始重新执行。可以从上一个检查点执行

    alter table schema.table_name 

      drop columns continue 行数。

  • 相关阅读:
    电商杂谈我对于各类平台的看法及八卦杂谈
    echo的实现
    Autofac依赖注入
    asp.net中获取系统信息
    openlayers 地图事件
    C# Finalize和Dispose的区别
    NET中MSMQ的使用附例子
    图像处理之相似图片识别
    openlayers图片样式替换
    WPF触发器
  • 原文地址:https://www.cnblogs.com/moonfans/p/3877572.html
Copyright © 2020-2023  润新知