SQLServer表内自关联级联删除
今天处理SQLServer级联删除遇到了很蛋疼的事。
SQLServer 不支持表内自关联级联删除,而MySql和Oracle却支持。
貌似原因是SQLServer 会产生循环级联,就不给这样弄。所以很明确说:SQLServer 是不支持表内自关联级联删除。
那怎么办呢:只能用触发器呗
IF EXISTS (SELECT NAME FROM SYSOBJECTS
WHERE NAME = 'tg_SysDelete' AND TYPE = 'TR')
DROP TRIGGER tg_SysDelete
GO CREATE TRIGGER tg_SysDelete
ON SysSiteMap
FOR DELETE
AS
IF (SELECT COUNT(*) FROM DELETED) > 0
DELETE FROM SysSiteMap WHERE ParentId IN (SELECT Id FROM DELETED)
GO
PS:SQLServer为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表。
单单是这样是级联删除不了的,需要开启数据库的递归触发器功能
开启办法:手动设置:数据库上点右键->属性->选项 设置 递归触发器已启用 为 true
sql语句启动:ALTER DATABASE 数据库名称 SET RECURSIVE_TRIGGERS ON
一个表内在有多个列同时关联于另一个表时,不支持多个级联删除 ,循环级联删除限制
SQLServer表内自关联级联删除的更多相关文章
- Hibernate中表与表之间的关联多对多,级联保存,级联删除
第一步:创建两个实体类:用户和角色实体类,多对多关系,并让两个实体类之间互相关联: 用户实体类: package com.yinfu.entity; import java.util.HashSet; ...
- Hibernate中表与表之间的关联一对多,级联保存和级联删除
1:Hibernate的一对多操作(重点) 一对多映射配置 第一步:创建两个实体类:客户和联系人(例)以客户为一,联系人为多: package com.yinfu.entity; public cla ...
- 自增特性,外键,级联更新与级联删除,表间关系,SELECT用法,GROUP BY
自增特性 自动增长的作用: 问题:为数据表设置主键约束后,每次插入记录时,如果插入的值已经存在,会插入失败. 如何解决:为主键生成自动增长的值. 自动增长的语法: 字段名 数据类型 AUTO_INCR ...
- SQL级联删除——删除主表同时删除从表——同时删除具有主外键关系的表
create table a(id varchar(20) primary key,password varchar(20) not null) create table b(id int iden ...
- SqlServer 查询表、表说明、关联表、字段说明,语句汇总
----查询所有的表 SELECT * FROM SYSOBJECTS WHERE TYPE='U' ----根据表名查询所有的字段名及其注释 SELECT A.NAME,B.VALUE FROM S ...
- 30)django-ORM(元信息,级联删除,正反向操作,连表查询优化)
一:元信息 class User(models.Model): name=models.CharField(max_length,index=True) email=model.CharField(m ...
- Hibernate一对多关联映射的配置及其级联删除问题
首先举一个简单的一对多双向关联的配置: 一的一端:QuestionType类 package com.exam.entity; import java.util.Set; public class Q ...
- SQL Server— 存在检测、建库、 建表、约束、外键、级联删除
/******************************************************************************** *主题: SQL Server- 存 ...
- sqlserver 级联删除、级联更新
增加外键约束时,设置级联更新.级联删除:[ ON DELETE { NO ACTION | CASCADE | SET NULL | SET DEFAULT } ][ ON UPDATE { NO A ...
随机推荐
- java 显示透明背景png图片
首先理由ps生成一个背景透明的png图片,然后设置JPanel面板的透明属性,也就是panel.setOpaque(false);设置为透明 class MyPanel extends JLayere ...
- Flume官方文档翻译——Flume 1.7.0 User Guide (unreleased version)(一)
Flume 1.7.0 User Guide Introduction(简介) Overview(综述) System Requirements(系统需求) Architecture(架构) Data ...
- Javascript定时器(二)——setTimeout与setInterval
一.解释说明 1.概述 setTimeout:在指定的延迟时间之后调用一个函数或者执行一个代码片段 setInterval:周期性地调用一个函数(function)或者执行一段代码. 2.语法 set ...
- BonBon - 使用 CSS3 制作甜美的糖果按钮
BonBon 是一组使用 CSS3 制作的甜美的糖果按钮样式.在过去,我们都是使用图片或者 JavaScript 来实现漂亮的按钮效果,随着越来越多的浏览器对 CSS3 的支持和完善,使用 CSS3 ...
- Android 2.x中使用actionbar - Actionbarsherlock (2)
先前有一个项目,是基于android4.0来开发,使用到了Fragment及ActionBar,没打算支持android2.1-android2.3系列版本 写完之后,我将此应用发布到百度应用,一天以 ...
- Elasticsearch聚合 之 Terms
之前总结过metric聚合的内容,本篇来说一下bucket聚合的知识.Bucket可以理解为一个桶,他会遍历文档中的内容,凡是符合要求的就放入按照要求创建的桶中. 本篇着重讲解的terms聚合,它是按 ...
- 第3/24周 区_SQL Server中管理空间的基本单位
哇哦,SQL Server性能调优培训已经进入第3周了!同时你已经对SQL Server内核运行机制有了很好的认识.今天我会讲下SQL Server中的区管理,因为这是个很重要的话题,我们会在第23周 ...
- HashMap的resize和Fail-Fast机制
1.HashMap的resize(rehash): 当HashMap中的元素越来越多的时候,hash冲突的几率也就越来越高,因为数组的长度是固定的.所以为了提高查询的效率,就要对HashMap的数组进 ...
- 让我们开启数据库无Linq、零sql时代
让我们开启数据库无Linq.零sql时代 Moon.Orm 5.0总论 第一部分 MQL Moon.Orm 5.0 (MQL版) 版本维护及下载 (跟踪发布) Moon.Orm 5.0系列文章 1. ...
- java继承的对象中构造函数的调用顺序
建立两个继承关系的对象 public class Machine { public String machieNameString; public Machine() { System.out.pri ...