zoukankan      html  css  js  c++  java
  • 视图、触发器

    一、视图:
    【是由一个或多个表的数据拼接而成,是一个虚拟的表;
    只能用来查询显示,不可以增删改操作;
    如果要增删改操作,需要去对应的基础表进行操作;
    每一次查询视图,都会先去基础表中调取数据,再拼接成视图虚拟表;】

    1、创建格式:
    create view 虚拟表名称
    as
    要执行的代码

    【注意!!!:视图中,不允许出现重复的列!!!
    解决方式:
    表名称.重复的字段名

    例如下图:

     


    2、修改格式:
    alter view 要修改的虚拟表的名称
    as
    修改后要执行的代码

    3、使用方式:
    数据库—视图—视图名称—右击“设计”—改“别名”
    select *from虚拟表名称

    二、触发器
    触发器是一个特殊的存储过程,没有参数,没有返回值
    通过对表的动作来触发执行

    1、创建格式:
    create trigger 触发动作_要操作的表名称 insert/update/delete
    on 要操作的表名称
    for/after 触发动作
    as
    要执行的代码
    例如:select *from 要操作的表名称

    for/after 是在动作执行完毕之后再触发
    instead of 是替换命令

    【如果要修改触发器的书写格式:
    alter trigger 触发动作_要操作的表名称 insert/update/delete
    on 要操作的表名称
    for/after 触发动作
    as
    修改后要执行的代码


    每个表里的增、删、改三种触发器,一种只能有一个

    2、存储位置:
    数据库—表—触发器—右击‘修改’

    3、级联删除:
    用来删除不同表里有约束的数据
    create trigger 触发动作_要操作的表名称
    on 要操作的表名称
    instead of 触发动作
    as
    要执行操作的代码

    4、防止误删数据
    create trigger delete_students
    on students
    instead of delete
    as
    declare @a nvarchar(max)
    select @a = name from deleted;
    declare @b nvarchar(max)
    select @b = code from deleted;
    if @a = 'XXX'
    begin

    print 'XXXXX,XXXX';

    end

    else
    begin

    delete from students where name = @a;

    end

    delete *from students where code = 'XXX';

     

  • 相关阅读:
    bzoj 2159 Crash 的文明世界
    bzoj 4241 历史研究
    数论大合集(柿子版)
    [IOI2005]mou
    CSP 2020 T3 函数调用
    线段树 --算法竞赛专题解析(24)
    树状数组 --算法竞赛专题解析(23)
    算法竞赛专题解析(22):数论--同余
    算法竞赛专题解析(21):数论--线性丢番图方程
    算法竞赛专题解析(20):数论--GCD和LCM
  • 原文地址:https://www.cnblogs.com/123lucy/p/5580937.html
Copyright © 2011-2022 走看看