SQL 级联更新,级联删除的概念

SQL级联更新,级联删除

今天做了个测试,搞清楚了级联更新,级联删除
级联删除:当我们没有对键加级联删除的时候,删除主键表中的数据(外键表有引用的数据)时,会报错,不能删除,必须先把相关联的外键数据
            删除了,才能删除主键表的数据,但如果新建外键的时候设置了级联删除,那么当我们删除主键表的数据时,数据库就会自动帮我们把相
            关联的外键表数据删除掉,这个好理解
级联更新:一直困扰我,级联更新有什么用,是更新什么东西呢,今天做了个测试(mssql),终于搞清楚了一点,我们修改主键表中和外键表进
            行关联的字段(一般是主键表的主键,mssql好像必须是主键),如果我们没有设置级联更新,那么这个时候会提示不能更新,因为外键表
            还有数据正在和这条数据进行关联,但是如果设置了级联更新,那么外键表的数据会自动帮我们更新

时间: 2024-08-10 17:00:50

SQL 级联更新,级联删除的概念的相关文章

SQL图形化操作设置级联更新和删除

SQL级联操作设置 对SQL数据库的表,进行级联操作(如级联更新及删除),首先需要设置表的主外键关系,有两种方法: 第一种: 1. 选择你要进行操作的数据库 2. 为你要创建关系的两个表设置主键 3. 在此数据库的数据库关系图一栏处 =>单击右键=>创建新的关系图=>选择要添加关系的表,单击添加 4. 完成后会在关系图的窗口上生成两个表,在表的某列按钮上长按鼠标左键,并拖到另一张表上 5. 在新弹出的"表和列"的窗口中,设置两个表对应的主外键字段,确定 6. 在外键关

数据库事务测试以及级联更新级联删除

数据库事务 start transaction; #开始事务 insert into gzb(gz)values(5000); insert into gzb(gz)values(6000); insert into gzb(gz)values(7000); insert into gzb(gz)values(8000); /*执行事务,并查看是否添加成功数据*/ commit; # commit数据,查看表中数据是否提交 rollback; #数据库回滚 级联更新,级联删除 主要通过两种方式

建表时和建表后的级联更新和删除

--对表建立级联更新或级联删除方法--1.在建表时直接定义级联更新和级联删除create table pktable(ID int primary key,SCD int, SName varchar(20)) create table fktable(ID int primary key,SCD int references pktable(ID) on delete cascade on update cascade, Age tinyint) insert into pktable val

SQL Server-已更新或删除的行值要么不能使该行成为唯一行,要么改变了多个行

在更新没有设置主键的表的时候出现下图中的问题: 问题原因: 这种问题大多是由于没有主键(PK)导致同一张表中存在若干条相同的数据 DBMS存储时,只为其存储一条数据,因为DBMS底层做了优化,以减少数据冗余.所以删除或更新一条重复数据就牵一发而动全身 解决方法: 推荐设置主键,检查是否存在相同行数据

【Python】Django数据模型、级联删除、级联更新、ER图导出等

在本文中,我们将向读者详细介绍如何在更新和删除父表数据的同时,触发有关子表数据的级联更新和删除操作.您将看到当使用InnoDB表的时候,借助于外键约束就可以轻松搞定这一过程. 一.利用外键约束更新并删除MySQL中的数据 我们知道,开发能够维护多个表的完整性的数据库驱动的应用程序是一件非常复杂的事情--即使应用程序所面对的是当前最流行的开源关系型数据库管理系统MySQL服务器时也不例外.如果一个应用程序必须处理多个数据库表,而这些表之间有存在着某些预定义的关系,这时一旦父表中的数据被更新或者删除

外键 级联更新/删除 复制表 修改表

引入 所有的信息都记录在一张表中所带来的问题 1.表的结构不清晰   太乱 2.浪费硬盘空间     dep_name 重复太多 3.表的扩展性极差(无法忽略的缺点)    想改其中的一个部门需要连着改好多 类似于我们将所有的代码都写在用一个py文件内 确立表与表之间的关系 一定要换位思考(必须两方都考虑周全之后才能得出结论) 一对多 以员工表和部门表为例 先站在员工表看能否有多个员工对应一个部门 翻译过来: 一个部门能否有多个员工 可以!!!(暂时只能确定员工单向多对一部门) 再站在部门表看能

Oracle外键级联删除和级联更新

1 级联删除 Oracle在外键的删除上有NO ACTION(类似RESTRICT).CASCADE和SET NULL三种行为. 下面以学生-班级为例说明不同情况下的外键删除,学生属于班级,班级的主键是学生的外键. -- 班级表 CRATE TABLE TB_CLASS ( ID NUMBER NOT NULL, --班级主键 NAME VARCHAR2(50), --班级名称 CONSTRAINT PK_TB_CLASS PRIMARY KEY (ID) ); -- 学生表 CREATE TA

Mysql实现级联操作(级联更新、级联删除)

一.首先创建两张表stu,sc create table stu( sid int UNSIGNED primary key auto_increment, name varchar(20) not null) TYPE=InnoDB charset=utf8; create table sc( scid int UNSIGNED primary key auto_increment, sid int UNSIGNED not null, score varchar(20) default '0

oracle系列--级联删除和级联更新

必须声明:此博客转载于Oracle外键级联删除和级联更新http://www.2cto.com/database/201507/417496.html 鉴于此前收藏的精彩博客无料被删除了,很是痛心,所以还是要复制一下 一.级联删除 Oracle在外键的删除上有NO ACTION(类似RESTRICT).CASCADE和SET NULL三种行为. 下面以学生-班级为例说明不同情况下的外键删除,学生属于班级,班级的主键是学生的外键. 1 -- 班级表 2 CRATE TABLE TB_CLASS 3