如何使用SQL语句创建触发器
🎈个人主页: :✨✨✨初阶牛✨✨✨。 触发器。是一种特殊类型。存储过程。,它不同于我们之前介绍的存储过程。存储过程。语句可以直接调用,但是。触发器。它主要是通过触发事件而被执行的.。 触发器。其主要作用是实现原因。主键。 和。外键。 复杂的参考完整性和数据的一致性是无法保证的。除此之外,触发器。还有许多其他不同的功能: ①、约束条件复杂。 ②、确保数据的安全。 触发器。因为。触发器。自动触发数据库的相应操作。 ③.级联式。 触发器。可以根据。数据库。内部操作,并自动影响整个地级联。数据库。各种内容。例如:对。 ④.调用。存储过程。 为响应数据库更新,触发器。一个或多个可以调用。存储过程。.。 但总的来说,,触发器。性能通常相对较低。 三、。触发器。的种类。 。 。 (1)在插入时创建触发器。 句子实现:。 执行:。 删除外键约束; (2)为。 (3)在。 向。 向。 查看。 创建。 (1)创建一个视图。 创建。视图。:。 创建。触发器。:。 测试修改数据:。 (2)在。 添加新字段。 创建触发器:。 以上是对触发器的基本理解。我希望它能帮助你.。 欢迎朋友私信与牛牛讨论问题,但牛牛的认知范围有限,目前只关注C语言、数据结构,C++等部分领域.。
🐻推荐专栏1: 🍔🍟🌯C语言初级。
🐻推荐专栏2: 🍔🍟🌯C语言进步。
🔑个人信条: 🌵知行合一。
🍉本篇简介:>记录SQL 创建server触发器的句子,并简要介绍.。前言。
目录。
一、触发器介绍。
1.1。 触发器。概念及定义:。
例如,对某一表进行例如。UPDATE。
(修改)、。INSERT。
(插入)、。DELETE。
(删除)这些操作时,SQL Server。 触发器定义将自动执行。SQL。
句子,确保数据之间的相互关系,实时更新.。1.2 、。触发器。的作用。
触发器。CHECK可以实现比CHECK 句子的约束比较复杂。SQL。
通过数据库中的操作,语句不允许数据库中未经许可的指定更新和变更。A。
操作表时,导致表。A。
表上的。触发器。被触发,A。
中的。触发器。包含对。B。
表的数据操作(UPDATE。
(修改)、。INSERT。
(插入)、。DELETE。
(删除)),而这个操作又导致了B表。触发器。被触发。SQL Server。
一般支持以下两种触发器:。AFTER。
触发器。AFTER。
触发器。只执行某一操作的要求(INSERT、UPDATE、DELETE)之后,触发器。触发且。只能在表。上定义。针对表的同一操作可以定义多个定义。触发器。。
2.。 INSTEAD OF。
触发器。。INSTEAD OF。
触发器。表示不执行其定义的操作(INSERT、UPDATE、DELETE),而只是执行。触发器。本身。INSTEAD可以在表上定义 OF。触发器。,INSTEAD也可以在视图上定义 OF。触发器。,但是,INSTEAD只能定义为同一操作 OF。触发器。。二、使用SQL语句创建触发器实例。
1.创建。
after。
融发器。sc_insert。
,当向。sc。
当表插入数据时,,必须确保插入的学号已经存在。student。
表中存在还必须确保插入的课程号在。Course。
表中存在﹔如果没有,c;给出相应的提示信息,取消插入操作,提示信息要求指示插入信息是学号不符合条件还是课程号不符合条件;注意:首先取消Student表和sc表之间的外键约束。create。trigger。sc_insert。on。sc。after。insert。as。if。not。exists。(。select。*。from。student。,inserted。 where。student。.。sno。=inserted。.。sno。)。begin。print。'插入信息的学号不在学生表中! 'if。not。exists。(。select。*。from。course。,inserted。 where。course。.。cno。=inserted。.。cno。)。print。'插入信息的课程号不在课程表中!'rollback。end。else。begin。if。not。exists。(。select。*。from。course。,inserted。 where。Course。.。cno。=inserted。.。cno。)。begin。print。'插入信息的课程号不在课程表中! 'rollback。end。end。
insert。into。sc。values。(。'20110112','001','78')。
alter。table。sc。drop。constraint。FK_sc__sno__332C9D34。
Course。
表创建触发器。Course_del。
,当删除了。Course。
表中的课程信息时,同时将表。sc。
删除表中相应的学生选课记录。create。trigger。course_del。on。course。after。delete。as。if。exists。(。select。*。from。sc。,deleted。where。sc。.。cno。=deleted。.。cno。)。begin。delete。from。sc。where。sc。.。cno。 in。(。select。cno。 from。deleted。)。end。delete。from。Course。where。Cno。='003'
select。*。from。sc。
Course。
在表中添加一个平均分。avg_Grade。
字段(记录每门课程的平均分),创建触发器。Grade_modify。
,当。sc。
当表中某学生的成绩发生变化时,则。Course。
表中的平均成绩也可以及时相应地改变。Course。
在表中添加一个平均分。avg_Grade。
字段。alter。table。Course。add。avg_Grade。 smallint。
avg_Grade。
添加数据。update。course。set。avg_Grade。=(。select。AVG。(。Grade。)。from。sc。where。sc。.。Cno。=Course。.。Cno。)。
Course。
表:。select。*。from。Course。
Grade_modify。
触发器。create。trigger。Grade_modify。on。sc。after。update。as。if。update。(。grade。)。begin。update。course。set。avg_grade。=(。select。avg。(。grade。)。from。sc。 where。course。.。cno。=sc。.。cno。group。by。cno。)。end。update。sc。set。Grade。='90 'where。sno。='20050001'and。cno。='001'
2.创建。
instead of。
触发器。Student_view。
,包括学号、姓名、课程号、课程名、成绩等属性,在。Student_view。
在上面创建触发器。Grade_moidfy。
,当对。Student_view。
修改中学生成绩时,SC中的相应记录实际修改。create。view。student_view。as。select。s。.。Sno。,Sname。 ,c。.。Cno。 ,Cname。 ,Grade。from。student s。 ,course c。,sc。where。s。.。Sno。=sc。.。sno。 and。c。.。Cno。=sc。.。cno。
create。trigger。Grade_moidfy。 on。student_viewinstead。 of。update。as。if。UPDATE。(。Grade。)。begin。update。sc。set。Grade。=(。select。Grade。 from。inserted。)。where。Sno。=(。select。sno。 from。inserted。)。and。Cno。=(。select。Cno。 from。inserted。)。End。update。student_viewset Grade。=40。where。Sno。='20110001'and。Cno。='002'
select。*。from。student_view。
sc。
在表中插入一个。getcredit。
字段(记录学生,所选课程获得的学分),创建触发器。ins_credit。
,#xff08当变更;注:插入时)sc。
表中的学生成绩,如果新成绩大于或等于60分,#xff0c;学生可以获得这门课的学分,而且这个学分必须和。Course。
表中的值一致﹔如果新成绩小于60分,#xff0c;该生未能获得学分,修改值为0。getcredit。
:。alter。table。sc。add。getcredit。 smallint。
create。trigger。sc_up。on。sc。after。insert。,update。as。declare。@xf。int。,@kch。char。(。3。)。,@xh。char。(。8。)。,@fs。int。select。@fs。=grade。,@kch。=cno。,@xh。=sno。 from。inserted。if。@fs。>=60。update。sc。 set。@xf。=(。select。credit。 from。course。 where。sc。.。Cno。=course。.。cno。)。where。sno。=@xh。and。cno。=@kch。else。update。sc。 set。@xf。=0where。sno。=@xh。and。cno。=@kch。修改数据:。update。sc。set。Grade。='90'where。Sno。='20050001'and。cno。='001'
- 最近发表
- 随机阅读
-
- 红米K80京东活动价格低至2583元
- 普通人学习AI绘画,Stable diffusion 和 Midjourney 如何选择?不要急着花2W买显卡
- GG100 2024:iGame GeForce RTX 4080 SUPER黑神话悟空定制显卡 获奖
- ZOL推荐2024:MAXHUB领效 商用办公电脑高性能兼顾高安全性 获奖
- 哪些地下游戏值得玩? 十大必玩地下游戏排名前十
- GG100 2024:先锋版移动固态硬盘获得年度用户口碑奖
- 爱心驿站是户外劳动者的“祝福”
- 至少两三年 手机无脑选择2000/3000元
- 《控制》终极版1.30更新:小岛秀夫联动任务上线
- 《刺客信条:影子》的历史事实被篡改 作家涉及欺诈
- 人工智能和云计算带来的技术变化:大数据分析的变化
- PHP电影网站源码在线影视播放网站自动采集MKCMS升级版米库模板,WAP手机版附三套模板模板
- 核物理学家刘畅离开美国回国:在母校北京大学工作
- 【算法一周目】滑动窗口(2)
- 如何使用Net2FTP轻松部署本地Web文件管理器并远程访问管理内网资源?
- 02 Midjourney从零到商业入门:账号注册&添加机器人
- 从大规模恶意攻击 DeepSeek 事件看 AI 创新隐忧:安全可观测体系建设刻不容缓
- 【Protobuf】Springboot集成protobufffbot
- 在日本历史上最大的“海自贪污案”中,人们更关心赃物中的Switch
- langchain 入门指南
- 搜索
-
- 友情链接
-