触发器--再次出发

2024-05-23 21:58
文章标签 触发器 出发 再次

本文主要是介绍触发器--再次出发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

       关于触发器其实在机房重构中我们就已经涉及到了,有的用的是触发器有的使用存储过程。现在在牛腩中我们又遇到了使用触发器。让我们再次出发看看究竟怎么使用。                 

    在牛腩视频中要实现对删除类别的操作,我们使用一般的SQL语句去删除会出现这样的错误:

    { DELETE语句与REFERENCE约束“FK_news_category”冲突。该冲突发生于数据库“newssystem”,表“dbo.news” 语句终止;}

    出现这种错误的原因就是各表直接有主键外键约束 ,如数据库关系图:

                  

       首先我们知道SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。                  

     要想完美删除类别表下的新闻以及评论就用到了触发器。当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,我们对该表写对应的DML触发器,该触发器自动执行所以这里我们用的触发器应该叫DML触发器。

                 

<span style="font-family:KaiTi_GB2312;">-- =============================================
-- Author:		刘伟
-- Create date: <2014-9-22  11:28
-- Description:	删除类别触发器
-- =============================================
ALTER TRIGGER [dbo].[trigCategoryDelete]ON [dbo].[category]instead of DELETE
AS 
BEGINdeclare @caId intselect @caId=id from deleted--删除评论delete comment where newsId in(select newsId from news where caId=@caId )--删除新闻delete news where caId=@caId--删除类别delete category where id=@caIdEND</span>


    小结:使用 DML触发器可通过数据库中的相关表实现级联更改,通过级联引用完整性约束可以更有效地执行这些更改。触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。





这篇关于触发器--再次出发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/996523

相关文章

杂谈:再次写给我们这些浮躁的程序员

再次写给我们这些浮躁的程序员     多做项目,多思考 不要害怕做事,刚毕业的同学最缺的就是工作经验,乱七八糟的项目能让你很快就了解了一个公司的业务与使用的技术,并且可以多接触同事与客户。 当你毕业后刚进一家公司时,如果主管没有把你安排到项目组工作,那真的很杯具,因为他认为你还不能胜任工作或者你的加入会让项目组更糟。 还有人说,我刚进公司,公司就把我当成了苦工,工资又低,项目组加入好几个,也做

Oracle数据库(触发器、存储过程、函数、包)

一、触发器(trigger) 推荐练习文档: http://wenku.baidu.com/link?url=brtd9myO4XIaEjRPaRB0yWgV2_TfXmNxS6KKjB_avq7d0hPs3SknJdrs-JLtWe–H-f3q-I61HUxkcqqAFMC0z6Zf65QBbmFRB8TAlULmGS http://www.cnblogs.com/friends

Flink实例(115):自定义时间和窗口的操作符(十四)窗口操作符(四)触发器(Triggers) (二)

Flink 中窗口是很重要的一个功能,而窗口又经常配合触发器一起使用。 Flink 自带的触发器大概有: CountTrigger: 指定条数触发ContinuousEventTimeTrigger:指定事件时间触发ContinuousProcessingTimeTrigger:指定处理时间触发ProcessingTimeTrigger: 默认触发器,窗口结束触发EventTime

从需求场景下出发实操Clickhouse

背景 本着以实时数仓为目标调研了几款OLAP引擎,像Clickhouse、Kylin、Druid等,在粗略了解其架构后,并且在接受各个大厂Clickhouse实践、高性能测试报告、最近业界发展势头凶猛的熏陶与PUA情况下,不得已选择了Clickhouse,当然自己也做过一些测试,本篇将介绍clickhouse的一些原理、实践方案(可能还未实现、可能并不是最佳)与遇到的一些问题,总之只是希望能

button 提交后再次刷新页面

button,input type=button按钮在IE和w3c,firefox浏览器区别 当在IE浏览器下面时,button标签按钮,input标签type属性为button的按钮是一样的功能,不会对表单进行任何操作。 但是在W3C浏览器,如Firefox下就需要注意了,button标签按钮会提交表单,而input标签type属性为button不会对表单进行任何操作。 解决方案:

使用filter改变改变地址,但又不想被本过滤器再次拦截的方法

继承HttpServletRequestWrapper重写里面的方法 如果是servlet重写getRequestURI() 如果是spring mvc重写 getServletPath()  可以根据getDispatcherType()类确定是那种调度类型,一般客户端请求action,或controller都是REQUEST,controller跳转到页面是FORWARD。

Oracle19C触发器

触发器可以看作一种特殊的存储过程,它定义了一些在数据库相关事件(如INSERT、UPDATE、CREATE等事件)发生时应执行的“功能代码块”,通常用于管理复杂的完整性约束,或监控对表的修改,或通知其他程序,甚至可以实现对数据的审计功能。 1. 触发器简介 触发器是通过触发事件来执行的(存储过程的调用或执行是由用户或应用程序进行的)。能够引起触发器运行的操作就被称为触发事件,如执行DML

SQL server触发器简单示例

一:触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活。所以触发器可以用来实现对表实施复杂的完整性约束。   二:SQL Server为每个触发器都创建了两个专用表:Inserted表和Deleted表。这两个表由系统来维护,它们存在于内存中而不是在数据库中。这两个表的结构总是与被该触发器作用的表的结构相同。触发器执行 完成

Qt 运行一个应用程序,再次点击程序快捷方式弹出程序窗口

代码实现 .h文件 #ifndef SINGLEAPPLICATION_H#define SINGLEAPPLICATION_H#include <QObject>#include <QWidget>#include <QApplication>#include <QtNetwork/QLocalServer>class SingleApplication : public QAppl

Unity 对接 Android 第三方广告,App 切换到后台后,再次打开时,第三方广告被销毁导致无法触发回调逻辑的问题

该问题是由发行进行游戏测试时遇到并反馈的。大致情况如下: 1. 当触发了插屏广告后,在关闭广告前将 App 切换到后台,之后再次打开 App,此时插屏广告消失,并切游戏卡死。 2. 当触发激励视频广告后,在广告展示完毕前将 App 切换到后台,之后再次打开 App,此时激励视频广告消失,并且不会获得奖励。 虽然接第三方广告也接了很长一段时间了,但这个问题头一次遇到,因为不是专业 Android