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

     

  • 相关阅读:
    【重要】ASCII码表
    深入了解php opcode缓存原理
    php 请求参数限制
    【Demo】 生成二维码 和 条形码
    【Demo】HTML5 拍照上传
    jq cookie的使用
    vue.js中的v-for输出数组理解
    js无限轮播的写法
    HTML5视频的使用总结
    angular报错总计
  • 原文地址:https://www.cnblogs.com/123lucy/p/5580937.html
Copyright © 2011-2022 走看看