`
panshaobinSB
  • 浏览: 203960 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

oracle添加外键(转)

 
阅读更多
http://ithead.iteye.com/blog/1648286

1、默认的创建方式
在删除被参照的数据时,将无法删除。



Sql代码 
CREATE TABLE T_INVOICE
(ID NUMBER(10) NOT NULL,
INVOICE_NO VARCHAR2(30) NOT NULL,
CONSTRAINT PK_INVOICE_ID PRIMARY KEY(ID));

CREATE TABLE T_INVOICE_DETAIL
(ID NUMBER(10) NOT NULL,
AMOUNT NUMBER(10,3),
PIECE NUMBER(10),
INVOICE_ID NUMBER(10),
CONSTRAINT PK_DETAIL_ID PRIMARY KEY(ID));
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID); 


2、级联删除
    外键语法有个选项可以指定级联删除特征。这个特征仅作用于父表的删除语句。使用这个选项,父表的一个删除操作将会自动删除所有相关的子表记录



Sql代码 
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)
ON DELETE CASCADE;


    如果不能级联删除,可设置子表外键字段值为null,使用on delete set null语句(外键字段不能设置not null约束).



Sql代码 
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE(ID)
ON DELETE SET NULL; 


三、参照字段语法结构
    创建外键约束是,外键字段参照父表的主键或Unique约束字段。这种情况下可以不指定外键参照字段名,如下:



Sql代码 
ALTER TABLE T_INVOICE_DETAIL
ADD CONSTRAINT FK_INVOICE_ID
FOREIGN KEY(INVOICE_ID ) REFERENCES T_INVOICE;  


    当没有指定参照字段时,默认参照字段是父表的主键。
    如果外键字段参照的是Unique而非Primary Key字段,必须在add constraint语句中指定字段名。
分享到:
评论

相关推荐

    oracle设置主外键即主键序列自动增长

    添加外键约束 ```sql ALTER TABLE userinfo ADD CONSTRAINT u_g FOREIGN KEY (groupinfo_id) REFERENCES groupinfo (groupinfo_id); ``` 这行命令为 `userinfo` 表添加了一个外键约束,将 `userinfo` 表中的 `...

    在Oracle数据库中添加外键约束的方法详解

    添加外键:添加一个外键到表。 删除外键:删除已选择的外键。 使用 名 编辑框来输入新键的名。 使用 参考模式、参考表 和 参考限制 下拉列表来分别选择一个外部索引数据库、表及限制。 要包含栏位到键,只需简单地...

    Oracle外键不加索引引起死锁示例

    Oracle数据库系统中,死锁问题可能会由多种因素引起,其中包括外键没有添加索引。本文将深入探讨Oracle外键不加索引引起死锁的情况,并提供解决方案。 首先,我们需要理解外键和主键的关系。在关系型数据库中,主键...

    Oracle定义约束 外键约束

    ### Oracle定义约束:外键约束详解 #### 一、引言 在数据库设计与管理过程中,维护数据的一致性和完整性是非常重要的。Oracle数据库系统提供了一系列的机制来帮助开发者和管理员达到这一目标,其中最重要的机制之一...

    oracle建表练习(主键外键)

    在本次Oracle建表练习中,我们将会重点讨论建表时使用的主键(Primary Key)和外键(Foreign Key)概念。 首先,我们来详细了解一下主键的概念。主键是数据库表中每一行记录的唯一标识,它保证了表中的每条记录都能...

    MLDN魔乐科技_Oracle课堂18_外键约束

    2. 使用ALTER TABLE语句添加:如果在创建表时没有定义外键,可以通过ALTER TABLE命令后期添加。 3. 使用DDL(Data Definition Language)语句:如`ALTER TABLE child_table ADD CONSTRAINT fk_name FOREIGN KEY (fk_...

    oracle主键和外键[文].pdf

    在Oracle数据库中,主键和外键是关系型数据库中非常重要的概念,它们用于确保数据的一致性和完整性。主键是定义在一个表中用来唯一标识每一行的字段,而外键则是另一个表中的字段,它引用了主键来建立两个表之间的...

    oracle_创建表空间、表、主键、外键、序列.docx

    在Oracle数据库管理系统中,创建表空间、表、主键、外键和序列是数据库设计的基础操作。以下是对这些概念的详细解释以及如何在Oracle中执行这些操作。 **创建表空间** 表空间是Oracle数据库中存储数据文件的地方。...

    24.Oracle的主键和外键1

    在数据库设计中,主键和外键是确保数据完整性和一致性的重要工具,特别是在Oracle这样的关系型数据库管理系统中。主键和外键的概念以及它们的作用对于理解数据库的结构和操作至关重要。 首先,主键是表的一个或多个...

    MLDN魔乐科技JAVA培训_Oracle课堂18_外键约束.rar

    在SQL语句中,可以使用ALTER TABLE命令来添加外键约束。基本语法如下: ```sql ALTER TABLE child_table ADD CONSTRAINT fk_constraint_name FOREIGN KEY (child_column1, child_column2, ...) REFERENCES parent_...

    sql外键的建立文档

    以下是如何为B表的`a_num`字段添加外键约束: ```sql alter table B add constraint fk_b foreign key (a_num) references A (a_num); ``` 或者,如果你不想自定义约束名称,可以简化为: ```sql alter ...

    Oracle的表结构转成Mysql的表结构

    ### Oracle的表结构转成MySQL的表结构 #### 功能概述 本文介绍了一种将Oracle数据库中的表结构转换为MySQL数据库表结构的方法。通过编写一个PL/SQL函数`fnc_table_to_mysql`来实现这一目标。该函数可以接受四个参数...

    ALTER TABLE table_name

    ### ALTER TABLE 语句在Oracle中的应用 #### 标题:ALTER TABLE table_name - **知识点**:在数据库管理系统(DBMS)中,`ALTER TABLE` 是一种用于修改已存在表结构的 SQL 语句。这包括添加、删除或修改列、约束等...

    SqlServer表结构转oracle表结构

    C#代码需要查询这些视图获取注释信息,并在Oracle中使用`COMMENT ON TABLE`和`COMMENT ON COLUMN`语句添加注释。 4. **界面操作**:描述中提到的界面操作可能是指一个图形化用户界面(GUI),允许用户选择要迁移的...

    SSM+oralce_mybatis代码生成器

    4. 将生成的代码整合到SSM项目中:将新生成的类添加到对应的源码目录,将Mapper XML文件放入资源目录,并更新相应的配置文件。 5. 测试生成的代码:确保所有生成的组件能够正常工作,没有语法错误或逻辑问题。 总的...

    主键与外键的创建

    如果需要在已存在的表上添加外键约束,同样使用`ALTER TABLE`语句: ```sql ALTER TABLE Orders ADD FOREIGN KEY (Id_P) REFERENCES Persons(Id_P); ``` 外键约束可以防止插入非法数据,因为它要求外键的值必须...

    oracle创建表空间、表、主键、外键、序列

    下面将详细介绍如何创建表空间以及如何在Oracle中创建表、主键、外键和序列。 1. 创建表空间: 在Oracle中,首先需要创建一个表空间来存储未来的数据。以下是一个创建表空间的基本语法: ```sql CREATE TABLESPACE...

    oracle scott 转成mysql 的表学习应用

    这一步骤在MySQL中同样适用,但需要确保在添加约束之前,数据已经正确地导入并满足引用完整性。 此外,由于Oracle和MySQL的SQL语法有一些区别,例如,分页查询(Oracle的ROWNUM和MySQL的LIMIT),在写SQL查询时需要...

    oracle数据库导出表结构到WORD文档

    "oracle数据库导出表结构到WORD文档"是一个实用的操作,它能够帮助我们生成包含所有表定义、字段信息、主键、外键等的详细报告。通过这个工具,我们可以快速地将Oracle中的数据库对象信息整理成Word文档,方便打印、...

Global site tag (gtag.js) - Google Analytics