SQL 级联删除与级联更新的方法_MsSql

复制代码 代码如下:

on delete cascade

当你更新或删除主键表时,那么外键表也会跟随一起更新或删除,需要在建表时设置级联属性

CREATE TABLE Countries(CountryId INT PRIMARY KEY)
INSERT INTO Countries (CountryId) VALUES (1)
INSERT INTO Countries (CountryId) VALUES (2)
INSERT INTO Countries (CountryId) VALUES (3)

CREATE TABLE Cities( CityId INT PRIMARY KEY  ,CountryId INT REFERENCES Countries ON DELETE CASCADE);
INSERT INTO Cities VALUES(1,1)
INSERT INTO Cities VALUES(2,1)
INSERT INTO Cities VALUES(3,2)

CREATE TABLE Buyers(CustomerId INT PRIMARY KEY ,CityId INT REFERENCES Cities ON DELETE CASCADE);
INSERT INTO Buyers  VALUES(1,1),
INSERT INTO Buyers  VALUES(2,1)
INSERT INTO Buyers  VALUES(3,2)

此外还有级联更新
on update cascade

时间: 2024-11-08 18:22:27

SQL 级联删除与级联更新的方法_MsSql的相关文章

SQL Server数据库基础的级联删除、级联更新与三层架构之窥

一.定义 级联删除是指删除包含主键值的行的操作,该值由其它表的现有行中的外键引用.在级联删除中,还删除其外键值引用删除的主键值的所有行. 级联更新是指更新主键值的操作,该值由其它表的现有行中的外键引用.在级联更新中,更新所有外键值与新的主键值相匹配. 三层架构是指一种架构思想.通常他将整个业务应用划分为:表现层(UI).业务逻辑层(BLL).数据访问层(DAL).区分层次的目的是为了"高内聚.低耦合"的思想. 二.特点 大家都知道,级联删除与级联更新操作,都是指主表的信息删除或更新后,

[NHibernate]一对多关系(级联删除,级联添加)

目录 写在前面 文档与系列文章 一对多关系 一个例子 级联删除 级联保存 总结 写在前面 在前面的文章中,我们只使用了一个Customer类进行举例,而在客户.订单.产品中它们的关系,咱们并没有涉及,比如一个客户可以有一个或者多个订单,在数据库中变现为"主外键关系",有时也喜欢称为"父子关系".那么就让我们一起学习,在nhibernate中,是如何处理这种关系的吧? 文档与系列文章 [Nhibernate]体系结构 [NHibernate]ISessionFacto

sql批量删除数据的几种方法介绍

sql批量删除数据的几种方法介绍 a是A表的一列,存在a=1的数据 1.Delete from A where exists (Select 1 where a=1)  2.Delete from A where exists (Select 1 from A where a=1) 结果 1:只删除a=1一条数据,2:删除所有数据. ,里面的数据是yyyy.mm.dd格式的,另外由表单提交要删除的某一年的数据,该表单名为Year,我现在想通过一个SQL语句批量删除某一年的所有记录,比如删除所有该

sql update多表联合更新的方法

sql update多表联合更新的方法 可以根据一个表的字段的值 像关联查询一样 修改 一个表的字段值 和另一个表关联 update 表一 set 表一.列名= 表二.列名 from 表一,表二 where 表一.ID = 表二.ID 本文总结了Update语句更新多表时在SQL Server,Oracle,MySQL三种数据库教程中的用法.我也试 了SQLite数据库,都没成功,不知是不支持多表更新还是咋的. 在本例中: 我们要用表gdqlpj 中的gqdltks,bztks字段数据去更新la

Oracle数据库中的级联查询、级联删除、级联更新操作教程_oracle

级联查询在ORACLE 数据库中有一种方法可以实现级联查询 select * //要查询的字段 from table //具有子接点ID与父接点ID的表 start with selfid=id //给定一个startid(字段名为子接点ID,及开始的ID号) connect by prior selfid=parentid //联接条件为子接点等于父接点,不能反 这个SQL主要用于菜单的级联查询,给一个父接点可以查出所有的子接点.及子接点的子接点,一查到底,很实用.不过呢这个程序只能在orac

sql删除重复数据的详细方法_MsSql

一. 删除完全重复的记录 完全重复的数据,通常是由于没有设置主键/唯一键约束导致的.测试数据: 复制代码 代码如下: if OBJECT_ID('duplicate_all') is not nulldrop table duplicate_all GO create table duplicate_all ( c1 int, c2 int, c3 varchar(100) ) GO insert into duplicate_all select 1,100,'aaa' union allse

SQL查找某一条记录的方法_MsSql

SQL查找第n条记录的方法: select top 1 * from table where id not in (select top n-1 id from table) temptable0 SQL查找第n条开始的m条记录的方法: select top m * from table where id not in (select top n-1 id from table) temptable0) (注:表中必须有一个唯一值字段才可适用此方法.) 

SQL Server使用row_number分页的实现方法_MsSql

本文为大家分享了SQL Server使用row_number分页的实现方法,供大家参考,具体内容如下 1.首先是 select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1 生成带序号的集合 2.再查询该集合的 第 1  到第 5条数据 select * from (select ROW_NUMBER() over(order by id asc) as 'rowNumber', * from table1) a

SQL Server查看未释放游标的方法_MsSql

一直以来对SQL SERVER的游标都不怎么感冒,也很少使用SQL Server里面的游标,前几天有一位网友问如何检查数据库里面没有释放的游标,觉得有点意思,就测试验证了一下,顺便整理于此. 会话1:我们模拟一个应用程序或脚本,在打开游标后,忘记关闭.释放游标. DECLARE Cursor_Test CURSOR FORSELECT * FROM dbo.TEST;OPEN Cursor_Test; 此时如果我们如何检查数据库里面没有释放的游标?其实SQL SERVER提供了一个动态管理函数s