• 视图、触发器


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

    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';

     

  • 相关阅读:
    围棋角部大眼的气
    openwrt 增加自定义包
    OpenWrt – 编译前的./scripts/feeds脚本用法
    memset 赋初值为无穷大和无穷小
    android 自动点击学习课程
    最多硬币问题
    最少硬币问题
    9.2 嵌套矩形问题
    ajax请求到一个controller在跳转到下载的controller上也不能下载,百度了一下总结下原因:发现原来jQuery的ajax回调已经把response的数据傻瓜式的以字符串的方式解析.
    MySQL 数据库的远程访问权限
  • 原文地址:https://www.cnblogs.com/123lucy/p/5580937.html
Copyright © 2020-2023  润新知