我是靠谱客的博主 友好唇膏,最近开发中收集的这篇文章主要介绍触发器简单介绍,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

触发器定义

触发器:根据事件触发机制自动触发的一段sql语句。触发器的主要作用

  • 数据完整性约束
  • 对数据库中的表级联操作
  • 对非法操作控制,回滚

触发器的种类

触发器分为两种:数据操作语言触发器和数据定义语言触发器

数据操作语言触发器

触发类型包括:Insert、update、delete
两张主要的表Deleted和inserted
deleted表 执行delete或update操作时,被删除的记录会被移到deleted表中
Inserted表 执行insert或update操作时,新的表会插入到inserted表中

数据定义语言触发器

用途:防止数据库框架进行某些修改或记录修改时间,如(drop、alter)

执行的顺序

触发器执行的目的分为after 、instead of。after执行sql语句后触发,instead of执行sql语句前触发,代替sql语句执行。

Demo

数据删除回滚,用户表[TEST_USERS],当删除用户id为3的数据时数据回滚提醒不让删除

CREATE TABLE [dbo].[TEST_USERS](
    [USER_ID] [int] IDENTITY(1,1) NOT NULL,
    [USER_CODE] [varchar](50) NULL,
    [USER_NAME] [varchar](50) NULL,
    [USER_ADDRESS] [varchar](200) NULL,
 CONSTRAINT [PK_TEST_USERS] PRIMARY KEY CLUSTERED 
(
    [USER_ID] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]  

触发器

create TRIGGER utrggerName
   ON  TEST_USERS
   AFTER delete
AS 
BEGIN
    SET NOCOUNT ON;
    if exists(select * from deleted 
    where USER_ID = 3)
    begin
        print '该条数据不能删除'
        RollBack;
    end

END

执行语句如果数据存在,保错提示数据不能删除
delete from [TEST_USERS] where USER_ID = 3;

转载于:https://www.cnblogs.com/LoveTomato/p/7506208.html

最后

以上就是友好唇膏为你收集整理的触发器简单介绍的全部内容,希望文章能够帮你解决触发器简单介绍所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部