Oracle 外键约束子表、父表

CREATE TABLE employees(

employee_id      NUMBER(6),

last_name        VARCHAR2(25) NOT NULL,

email            VARCHAR2(25),

salary           NUMBER(8,2),

commission_pct   NUMBER(2,2),

hire_date        DATE NOT NULL,

...

department_id    NUMBER(4),

CONSTRAINT emp_dept_fk FOREIGN KEY (department_id)

REFERENCES departments(department_id),

CONSTRAINT emp_email_uk UNIQUE(email));

FOREIGN KEY:在表级指定子表中的列

REFERENCES:标识在父表中的列

ON DELETE CASCADE:当父表中的列被删除时,子表中相对应的列也被删除

ON DELETE SET NULL:子表中相应的列置空

时间: 2024-08-25 02:27:08

Oracle 外键约束子表、父表的相关文章

SQL批量删除用户表(先删除所有外键约束,再删除所有表)

--批量删除用户表 --1.删除外键约束DECLARE c1 cursor for     select 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; '    from sysobjects     where xtype = 'F'open c1declare @c1 varchar(8000)fetch next from c1 into @c1while(@@fetch_status=0

使用truncate ,截断有外键约束的父表

此时有两种方法,解决1.删除外键约束,删除该表,在重建外键约束--查询外键约束select TABLE_NAME,CONSTRAINT_NAME,CONSTRAINT_TYPE,R_CONSTRAINT_NAME from ALL_CONSTRAINTS WHERE constraint_type='R' and owner='SCOTT'; 删掉外键约束 alter table emp drop constraint fk_deptno; truncate  表后如果仍然想要关联原来的子表,重

数据库 SQL 外键约束 多表查询

多表设计与多表查询 1.外键约束        表是用来保存现实生活中的数据的,而现实生活中数据和数据之间往往具有一定的关系,我们在使用表来存储数据时,可以明确的声明表和表之前的依赖关系,命令数据库来帮我们维护这种关系,像这种约束就叫做外键约束.          定义外键约束  foreign key(本表的列名 ordersid) references orders(id)(引用的表明及列名)     create table dept(         id int primary key

Oracle存储过程update受外键约束的主键值时完整性冲突解决方案

1.问题背景 虽然在数据库操作中我们并不提倡修改主键,但是确实在实际生活中有这样的业务需求: 表A有主键KA,表B中声明了一个references A(KA)的外键约束,我们需要修改A中某条目KA的值并且更新B中外键约束. 但是DBMS在执行了第一条update后检查完整性会发现冲突:B中条目的外键不存在. 注:我在Oracle database环境下遇到这个问题的,Oracle很蛋疼的不能设置外键为update级连,所以只有人工处理. 2.举例说明 用一个简单的例子说明,数据库中有以下三个表:

SQL反模式学习笔记5 外键约束【不用钥匙的入口】

2014-10-11 14:53:20 目标:简化数据库架构 一些开发人员不推荐使用引用完整性约束,可能不使用外键的原因有一下几点: 1.数据更新有可能和约束冲突: 2.当前的数据库设计如此灵活,以至于不支持引用完整性约束: 3.数据库为外键建立的索引会影响性能: 4.当前使用的数据库不支持外键.比如MySQL的MyISAM存储引擎,或者比SQLite3.6.19早的版本: 5.定义外键的语法并不简单,还需要查阅. 反模式:无视约束,即不使用约束 省略外键约束能使得数据库设计更加简单.灵活,或者

牛腩新闻发布系统---外键约束下如何删除记录

一.为什么使用外键? 查了些资料,八个字"保持完整性.一致性",结合我之前做的重构机房收费系统,我的理解是"防止相关表中数据没有关联而变得孤立,最终导致数据冗余",得出这个结论是上次让贾丽敏帮忙点系统时候我最深刻的感受,因为我的数据库关系图中辣么多张表却没有丝毫关系-- 既然官方解释是"完整性和一致性",就先来说明一下: 对于完整性和一致性,不少人都混为一谈了. 完整性(integrity)更多是针对实际业务来说的,比如说一个职员ID,不能在一个

外键约束 以及 数据库中实体的对应关系(1==1,1==n,n==n)

1.1.1 外键约束 Create database day16; Use day16; 创建部门表: create table dept( did int primary key auto_increment, dname varchar(20) ); insert into dept values (null,'研发部'); insert into dept values (null,'教研部'); insert into dept values (null,'市场部'); 创建员工表: c

SQL的主键和外键约束

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,

SQL的主键和外键约束详解及用途

SQL的主键和外键的作用: 外键取值规则:空值或参照的主键值. (1)插入非空值时,如果主键表中没有这个值,则不能插入. (2)更新时,不能改为主键表中没有的值. (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除. (4)更新主键记录时,同样有级联更新和拒绝执行的选择. 简而言之,SQL的主键和外键就是起约束作用. 关系型数据库中的一条记录中有若干个属性,若其中某一个属性组(注意是组)能唯一标识一条记录,该属性组就可以成为一个主键. 比如: 学生表(学号,姓名,性别,