• 触发器简单介绍


    触发器定义

    触发器:根据事件触发机制自动触发的一段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;

  • 相关阅读:
    struct与class的区别
    C#锐利体验第五讲 构造器与析构器(转)
    Sort Table
    WinXP(NTFS分区下)Vista系统文件的删除方法
    关于上海居住证我们不得不说的实情!(转)
    让你眼花缭乱的JS代码~~
    ASP的URL重写技术(IIS的ISAPI)[转]
    JS实现从照片中裁切自已的肖像
    C#锐利体验第二讲 C#语言基础介绍(转)
    装箱和拆箱
  • 原文地址:https://www.cnblogs.com/LoveTomato/p/7506208.html
Copyright © 2020-2023  润新知