精华内容
下载资源
问答
  • 主要介绍了在Oracle数据库中添加外键约束的方法,需要的朋友可以参考下
  • Oracle外键约束之删除外键约束

    千次阅读 2017-11-22 11:39:17
    一 语法 DISABLE|ENABLE CONSTRAINT constrint_name 二 实例 SQL> desc userinfo_f4 名称是否为空?...----------------------------------------------------------------------------- ... ID
    一 语法
    DISABLE|ENABLE CONSTRAINT constrint_name
    二 实例
    1. SQL> desc userinfo_f4
    2. 名称是否为空?类型
    3. -----------------------------------------------------------------------------
    4. ID NOT NULL VARCHAR2(10)
    5. USERNAME VARCHAR2(20)
    6. TYPEID_NEW VARCHAR2(10)
    7. SQL>select constraint_name,constraint_type,status from user_constraints
    8. 2where table_name='USERINFO_F4';
    9. CONSTRAINT_NAME C STATUS
    10. ---------------------------------------
    11. SYS_C0011062 P ENABLED
    12. FK_TYPEID_ALTER R ENABLED
    1. SQL> alter table userinfo_f4
    2. 2 disable constraint FK_TYPEID_ALTER
    3. 3;
    4. 表已更改。
    5. SQL>select constraint_name,constraint_type,status from user_constraints
    6. 2where table_name='USERINFO_F4';
    7. CONSTRAINT_NAME C STATUS
    8. ---------------------------------------
    9. SYS_C0011062 P ENABLED
    10. FK_TYPEID_ALTER R DISABLED
    三 语法
    DROP CONSTRAINT constaint_name;
    四 实例
    1. SQL> alter table userinfo_f4
    2. 2 drop constraint FK_TYPEID_ALTER;
    3.  
    4. SQL>select constraint_name,constraint_type,status from user_constraints
    5. 2where table_name='USERINFO_F4';
    6. CONSTRAINT_NAME C STATUS
    7. ---------------------------------------
    8. SYS_C0011062 P ENABLED
     
    展开全文
  • Oracle外键约束

    千次阅读 2019-07-14 20:30:26
    一、创建外键约束 两种方法 1.创建表时 create table 子表( id number, name varchar2(5), foreign key(id) references 父表(列名) ); 2.随时更改 alter table 子表 drop constraint 约束名; alter table ...

    一、创建外键约束

    两种方法

    1.创建表时

    create table 子表(

    id number,

    name varchar2(5),

    foreign key(id) references 父表(列名) 

    );

    2.随时更改

    alter table 子表 drop constraint 约束名;

    alter table 子表 add constraint 约束名  foreing key(外键) conferences 父表(列名) ;

    二、进一步理解

    外键只接受两种值,一是父表中的外键值,二是NULL

    创建外键时可以指定级联操作:

    在添加外键约束时,还可以指定级联操作的类型,主要用于确定当删除父表中的一条记录时,如何处理子表中的外键字段。

    1.CASCADE:删除父表中的被引用列的数据时,级联删除子表中相应的数据行

    2.SET NULL:删除父表中的被引用列的数据时,将子表中相应引用列的值设置为NULL。要求子表中相应引用列支持NULL

    3.NO ACTION:默认为此操作。删除父表中的被引用列的数据时,如果子表中的引用列中包含该值,则禁止该操作执行。(注意:执行delete 父表也不会报错,子表中的数据不会被删除

     

    注意:级联操作允许删除/更新多条数据!

    三、实际例子

    create table a_1 (id number);

    create table b_1(id number, id_a_1 number);

    alter table a_1 add constraint pk_a_1 primary key(id);

    alter table b_1 add constraint fk_b_1 foreing key(id_a_1)  references a_1(id)   on delete cascade;

     

    a_1表中增加数据:1,2

    b_1表中增加数据:

    11,1

    1111,1

    22,2

    delete from a_1 where id=1;  执行delete语句后:

    a_1表中删除一条数据,b_1表中删除两条数据。

    说明:无论是cascade或是set null,都允许删除子表中多条相应的数据  或 将子表中多条相应的数据置为NULL

    四、相关问题说明

    1. 给b_1表中添加主键时,引用的a_1表中的字段必须为主键或唯一键。否则报ORA-02270:此列列表的唯一关键字或主键不匹配

    2. 如果外键已经存在,再次添加相同外键的话,报ORA-02275:此表中已经存在这样的引用约束条件

    3. 如果主键已经存在,再次添加相同主键的话,报ORA-02260:表只能具有一个主键

     

    另外,即使添加外键的语句中声明级联操作为cascade,truncate语句执行依旧报ORA-02266

    《ORA-02266 / 有外键依赖时truncate table》 https://blog.csdn.net/shafatutu/article/details/95898186 

    展开全文
  •  Oracle外键是维护参照完整性的重要手段,大多数情况下的外键都是紧密关联关系。外键约束的作用,是保证字表某个字段取值全都与另一个数据表主键字段相对应。也是说,只要外键约束存在并有效,不允许无参照取值...
  • oracle外键约束的总结

    2018-04-16 19:00:59
    外键约束的创建方法 tes1的建表语句为create table test1 (hid number primary key,hname varchar2(10)); 1、创建表的同时创建外键约束 1.1、列级别 cre...
    外键约束的创建方法
    tes1的建表语句为create table test1 (hid number primary key,hname varchar2(10));
    1、创建表的同时创建外键约束

    1.1、列级别
    create table test2 (hid1 number(10) REFERENCES test1(hid),hname1 varchar2(10));--系统自动生成约束名
    create table test2 (hid1 number(10) constraint hid_pk REFERENCES test1(hid),hname1 varchar2(10));
    1.2、表级别
    create table test2 (hid1 number(10) ,hname1 varchar2(10),foreign key (hid1) REFERENCES test1(hid));--系统自动生成约束名
    create table test2 (hid1 number(10) ,hname1 varchar2(10),constraint hid_pk foreign key (hid1) REFERENCES test1(hid));

    2、表创建后再创建外键约束
    ALTER TABLE test2 ADD  FOREIGN KEY (hid1)  REFERENCES test1 (hid);--系统自动生成约束名
    ALTER TABLE test2 ADD CONSTRAINT hid_pk FOREIGN KEY (hid1)  REFERENCES test1 (hid);



    子表操作会遇到的报错
    不能修改值为父表不存在的记录
    不能插入父表不存在的记录
    create table test1 (hid number primary key,hname varchar2(10));
    create table test2 (hid1 number(10) constraint hid_pk REFERENCES test1(hid),hname1 varchar2(10));
    insert into test1 values(1,'1');
    insert into test2 values(1,'100');
    update test2 set hid1=2 where hid1=1;--报错ORA-02291: 违反完整约束条件 (HR.HID_PK) - 未找到父项关键字
    insert into test2 values(2,'100');--报错ORA-02291: 违反完整约束条件 (HR.HID_PK) - 未找到父项关键字
    drop table test2;
    drop table test1;


    父表操作遇到的报错
    create table test1 (hid number primary key,hname varchar2(10));
    create table test2 (hid1 number(10) constraint hid_pk REFERENCES test1(hid),hname1 varchar2(10));
    insert into test1 values(1,'1');
    insert into test2 values(1,'100');
    delete from test1;--报错ORA-02292: 违反完整约束条件 (HR.HID_PK) - 已找到子记录
    truncate table test1;--报错ORA-02266: 表中的唯一/主键被启用的外键引用
    drop table test1;--报错ORA-02449: 表中的唯一/主键被外键引用
    update test1 set hid=2 where hid=1;--报错ORA-02292: 违反完整约束条件 (HR.HID_PK) - 已找到子记录

    create table test1 (hid number primary key,hname varchar2(10));
    create table test2 (hid1 number(10) constraint hid_pk REFERENCES test1(hid),hname1 varchar2(10));
    insert into test1 values(1,'1');
    truncate table test1;
    drop table test1;--报错ORA-02266: 表中的唯一/主键被启用的外键引用

    create table test1 (hid number primary key,hname varchar2(10));
    create table test2 (hid1 number(10) constraint hid_pk REFERENCES test1(hid),hname1 varchar2(10));
    drop table test1;--报错ORA-02266: 表中的唯一/主键被启用的外键引用


    delete报错的解决方法
    解决方法1
    delete from test2;
    delete from test1;

    解决方法2(不保留子表记录)
    alter table test2 drop constraint hid_pk;
    ALTER TABLE test2 ADD CONSTRAINT hid_pk FOREIGN KEY (hid1)  REFERENCES test1 (hid) ON DELETE CASCADE;
    delete from test1;

    解决方法3(保留子表记录,但是字表对应字段值变成null,如下test2的hid1为null了)
    alter table test2 drop constraint hid_pk;
    ALTER TABLE test2 ADD CONSTRAINT hid_pk FOREIGN KEY (hid1)  REFERENCES test1 (hid) ON DELETE SET NULL;
    delete from test1;


    truncate报错的解决方法
    drop table test2;
    truncate table test1;

    alter table test1 disable primary key cascade;
    truncate table test1;

    alter table test1 disable primary key cascade;
    truncate table test2;
    truncate table test1;

    采用如下一样会报错
    truncate table test2;
    truncate table test1;--继续报错ORA-02266: 表中的唯一/主键被启用的外键引用


    drop报错的解决方法
    drop table test1 cascade constraints;

    drop table test2;
    drop table test1;

    采用如下一样会报错
    alter table test1 disable primary key cascade;
    truncate table test2;
    drop table test1;

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/30126024/viewspace-2152987/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/30126024/viewspace-2152987/

    展开全文
  • ORACLE 外键约束

    2019-04-07 18:54:05
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~...开发工具与关键技术:Oracle sql*plus PLSQL Developer 撰写时间:2019年04月04日 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 约束是表级的...

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    开发工具与关键技术:Oracle sql*plus  PLSQL Developer

    撰写时间:2019年04月04日

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    约束是表级的强制规定,在创建表的时候定义约束,也可以在建完表之后通过ALTER TABLE语句添加或删除约束、有效化或无效化约束,但是不能对约束进行修改;约束有非空约束(NOT NULL)、唯一性约束(UNIQUE)、主键约束(PRIMARY KEY)、外键约束(FOREIGN KEY)和检查性约束(CHECK)五种;

     

    外键约束(FOREIGN KEY):假如为某个列定义外键约束,则需要通过REFERENCES关键字指定一张外表作为父表,指定父表中的某个列(具有唯一性的列或主键)作为两张表连接的桥梁,而且定义了外键约束的这个列的值必须要在父表指定的列中存在,外键约束可以定义在表级或列级,如果未使用CONSTRAINT关键字为约束命名则系统会自动为约束命名;

    例如: 先创建一个班级表,再创建一个学生表,指定班级表中的主键ID作为学生表中的外键ID;

    create table ClassTable(

           ClassId number(10) primary key,

           ClassName varchar2(10)

    )

    定义在列级的写法:

    create table StudentTable(

             StudentId number(10) ,

             StudentName varchar2 (10) ,

             ClassId number(10) REFERENCES ClassTable(ClassId)

    )

    定义在表级的写法(需要指定定义外键约束的列):

    create table StudentTable(

             studentId number(10),

            studentName char(10) ,

            classId number(10),

            CONSTRAINT stu_classId_Fk FOREIGN KEY

           (classId) REFERENCES ClassTable(classId)

    )

     

     

     

    展开全文
  • Oracle定义约束 外键约束 实验详解
  • CREATE TABLE employees(  employee_id NUMBER(6),  last_name VARCHAR2(25) NOT NULL,  email VARCHAR2(25),  salary NUMBER(8,2),  commission_pct N...
  • oracle外键约束数据删除

    千次阅读 2014-11-15 00:49:24
     看起来挺简单的一个任务,做起来可棘手,原来这个表是外键约束的,作为一个主表存在!!  可是,我刚刚接触这个系统,可是难死我了 之后查了一下资料确认可以通过约束名来查询到相应的表禁用约束,这...
  • oracle外键约束

    千次阅读 2018-08-28 19:06:40
    外键约束 – 格式:forign key(外键名) references 主表(参照列名) – 比如,我们想要使用 clazz_id 字段将 tb_clazz 表和 tb_stu 表联合起来 – clazz_id int references tb_clazz(id) – 外键是构建于一张...
  • oracle查看主外键约束关系,根据此SQL可以进行主外键约束的查询!
  • 下面介绍如何设置外键约束 1.创建表时就设置外键约束。 为了插入数据不规范报错能够更快的找到错误的地方,外键一般都会设置一个别名来表示外键约束。外键所引用的另一个表的属性要是主键。 我们可以直接在...
  • Oracle 外键约束

    2019-05-16 15:48:00
    下面的语句创建department_20表,并定义和启用department_id列上的外键,该外键引用departments表的department_id列上的主键: CREATE TABLE dept_20 (employee_id NUMBER(4), last_name VARCHAR2(10), ...
  • 一 语法 列级进行设置 ...外键约束也被称为主次表的关系。 注意: 设置外键约束时,主表的字段必须是主键。 主从表中相应的字段必须是同一种数据类型。 从表中外键字段的值必须来自主表中的相
  • 原文链接: 聊聊Oracle外键约束(Foreign Key)的几个操作选项 关系型数据库是以数据表和关系作为两大对象基础。数据表是以二维关系将数据组织在DBMS中,而关系建立数据表之间的关联,搭建现实对象模型。主...
  • 一 语法 ADD CONSTRAINT constrint_name FOREIGN KEY(column_name) REFEFRENCES table_name(column_name) [ON DELETE CASCADE] 二 实例 SQL> create table userinfo_f4 2(id varchar2(10) primary ...3 usern
  • oracle添加外键约束的两种方式

    千次阅读 2020-03-26 18:17:41
    1.创建表同时创建外键约束 --当一个表需要创建外键时,说明这个表必然与某个表存在一对多的关系,且需要创建外键的表为“多”代表的表,即从表 create table t_a1( a_id NUMBER(32) primary key, --主键约束 a1 ...
  • 不少人在遇到这个情况下会找到这么样的一个sql脚本:查询外键 查找表的外键(包括名称,引用表的表名和对应的键名,下面是分成多步查询): ...查询外键约束的列名: select * from user_cons_col
  • oracle 禁用外键约束

    千次阅读 2018-06-05 15:30:00
    1、ORACLE数据库中的外键约束名都在表user_constraints中可以查到。其中constraint_type='R'表示是外键约束。2、启用外键约束的命令为:alter table table_name enable constraint constraint_name3、禁用外键约束的...
  • oracle添加外键约束的方法

    千次阅读 2018-09-05 15:11:04
    给表添加外键约束分两种情况,一种是刚建表的时候直接添加外键约束,另一种则是表已经创建好了再添加外键约束。 建表时添加外键约束: create table test_a( id number not null primary key, name varchar2(50...
  • 当指定了full=y选项导入时,oracle会自动处理约束间的关系;当表结构和表数据分开导入时,要把创建约束的步骤放到数据导入之后(指定 constraints=n );当表结构和约束已经建好时,先disable约束,重新导入数据,然后...
  • Oracle创建外键约束

    2019-10-23 13:50:21
    1. 创建表时创建外键 CREATE TABLE T1 (employee_id NUMBER(4), last_name VARCHAR2(10), job_id VARCHAR2(9), salary NUMBER(7,2), department_id CONSTRAINT fk_dep...
  • oracle创建外键约束的两种方式

    万次阅读 2017-07-08 22:24:41
    1、创建表时直接创建外键约束 2、先创建表,表创建成功后,单独添加外键约束
  • oracle外键约束表无法truncate

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 36,290
精华内容 14,516
关键字:

oracle外键约束