`

oracle 表约束的添加、修改以及约束的禁用启用(转)

 
阅读更多

 

--禁用所有外键约束的Sql代码
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'

--启用所有外键约束的Sql代码
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'  

执行查询出外键,然后执行即可

 

以下提到的内容都很简单,所以不详细说明,仅罗列一些语法:

一、主外键的添加、删除

1、向表中添加外键约束,把emp表的deptno字段设置为emp表的外键,引用自dept表

      ALTER TABLE emp  ADD CONSTRAINT FK_test FOREIGN KEY(deptno) REFERENCES dept(deptno);

2、向表中添加主键约束 alter table emp add constraint pk_emp primary key(empno);

3、创建表的同时创建主键约束

(1)无命名 create table EMP( empno int  primary key not null, ename varchar(20), deptno int);

(2)有命名 create table EMP( empno int , ename varchar(20), deptno int , constraint PK_EMP primary key(empno));

4、删除表中已有的主键约束

(1)无命名可用 SELECT * from user_cons_columns;

      如:SELECT * from user_cons_columns where table_name='EMP';

        查找表中主键名称得emp表中的主键名为PK_EMP

        alter table student drop constraint  PK_EMP;

(2)有命名 alter table emp drop constraint PK_EMP;

 

二、更改表的结构

  1.编辑表的字段

  修改一个列的数据类型(一般限于修改长度,修改为一个不同类型时有诸多限制):

  语法:

  ALTER TABLE 表名 MODIFY(列名,数据类型);

  eg1:

  alter table skate_test modify (author number(10,0) )

  在修改列的长度时候,只能编辑比现有字段实际存的长度还要大,否则提示下面的错误:

  ORA-01441: 无法减小列长度, 因为一些值过大

  eg2:

  alter table skate_test modify (author varchar2(10) )

  在修改列的数据类型的时候,所修改的列必须为空,否则提示下面的错误:

  ORA-01439: 要更改数据类型, 则要修改的列必须为空

  2.增加一个列

  语法:

  ALTER TABLE 表名 ADD(列名,数据类型);

  eg1:

  ALTER TABLE skate_test ADD(author NUMBER(38,0) not null);

  3.给列改名:

  语法:

  ALTER TABLE 表名 RENAME COLUMN 当前列名 TO 新列名;

  eg1:

  ALTER TABLE skate_test RENAME COLUMN author TO authorer_new

  4.删除一个列

  语法:

  ALTER TABLE 表名 DROP COLUMN 列名;

  eg1:

  alter table skate_test drop column author

  5.将一个表改名

  语法:

  ALTER TABLE 当前表名 RENAME TO 新表名;

  eg1:

  alter table skate_test rename to test_sakte

  5.给表加注释

  comment column on 表名.列名 is '注释内容';   //修改表的列的注释

  COMMENT ON TABLE MOVO_NEW.TEST_SAKTE  IS '注释内容';  //修改表的注释

 

三、主键、外键等约束的启用与禁用

这里以外键为例来说明

执行下面的查询语句,我们会得到当前用户下所有可以被查询到的表的外键,并生相应的修改语句。我们指需要把生成的结果copy出来执行就OK了。

不过对于alter语句的使用还是要谨慎,使用之前需要考虑清楚。

--删除所有外键约束 的Sql代码
select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP drop constraint FK_TEST;
--禁用所有外键约束的Sql代码
select 'alter table '||table_name||' disable constraint '||constraint_name||';' from user_constraints where constraint_type='R'
--alter table EMP disable constraint FK_TEST;
--启用所有外键约束的Sql代码
select 'alter table '||table_name||' enable constraint '||constraint_name||';' from user_constraints where constraint_type='R'  
--alter table EMP enable constraint FK_TEST;

这里有一点需要注意,在上面的查询语句中where条件后带的约束类型 constraint_type='R' ,我们这里指定的是'R',可以猜想到,出来R之外还有其他的约束类型。

下面列出constraint_type的其他几种类型及相应的含义:

Type Code Type Description Acts On Level
C Check on a table Column
O Read Only on a view Object
P Primary Key Object
R Referential AKA Foreign Key Column
U Unique Key Column
V Check Option on a view Object

所以,我们需要禁用哪类约束,就将查询条件做相应的调整就好。

分享到:
评论

相关推荐

    视图禁用与启用

    约束禁用 –如果有大批量数据导入时,我们可以采用禁用约束的方法, 主要的好处,首先效率高,另外有主外键约束的表之间导 入时,不用考虑导入的先后顺序。 –禁用约束语法: ALTER TABLE table DISABLE ...

    Oracle批量执行sql语句之禁用所有表的外键

    oracle 删除(所有)约束 禁用(所有)约束 启用(所有)约束 执行以下sql生成的语句即可 1删除所有外键约束 select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints ...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    在创建表时,经常会创建该表的主键、外键、唯一约束、Check约束等  语法结构 create table 表名( [字段名] [类型] [约束] ……….. CONSTRAINT fk_column FOREIGN KEY(column1,column2,…..column_n) ...

    oracle10g课堂练习II(1)

    启用块更改跟踪 3-27 增量更新备份 3-28 LIST 命令 3-29 REPORT 命令 3-30 REPORT NEED BACKUP 命令 3-31 REPORT NEED BACKUP :示例 3-32 REPORT OBSOLETE 和 DELETE OBSOLETE 使用 EM 管理备份 3-34 RMAN ...

    Oracle 10g 开发与管理

    3.启用和禁用角色 102 4.修改用户设置的角色 102 5.删除角色 102 四. 练习 102 五. 练习 103 六. 练习 104 七. 练习 105 第13讲 备份与恢复 106 一.数据库备份概述 106 1.备份和恢复 106 2.备份的类型 106 二....

    精通sql结构化查询语句

    4.1.1 数据表的结构 4.1.2 数据表的种类 4.2 创建数据表 4.2.1 创建数据表的语句结构 4.2.2 创建基本表 4.2.3 非空约束 4.2.4 DEFAULT指定缺省值 4.3 修改数据表 4.3.1 修改数据表的语句结构 4.3.2 给数据表增添新列...

    数据库设计和自动安装工具BDB V2.2(for Oracle/MS SQLServer/MySQL/Access/SQLAnywhere/Sybase)

    11、2007.11.28 Oracle、MySQL下导入数据增加禁用、重新启用外键约束处理。 12、2007.11.28 更正MySQL下处理导入日期类型字段数据问题。 13、2007.11.28 更正SQLServer下处理sql_variant、...

    Oracle从入门到精通

    6、约束条件:............................................. 2.5.视图 (VIEW) ........................................ 2.6、序列:............................................... 2.7、索引:...............

    jdk1.8.0_181(64位).7z

    默认方法允许将新功能添加到库的接口,并确保与为这些接口的旧版本编写的代码的二进制兼容性。 重复注释提供了对同一声明或类型使用多次应用相同注释类型的功能。 类型注释提供了在使用类型的任何地方应用注释的...

Global site tag (gtag.js) - Google Analytics