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

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

    注意!!视图中,不允许出现重复的列,怎么解决:在from前,把所有的列都打出来,重复的列第一个就可以
    ps:select student.sno,sname,ssex,sbirthday,class,score.cno,degree,cname,course.tno,tname,tsex,tbirthday,prof from student,score,course,teacher where student .sno=score.sno and course .cno=score.cno and teacher.tno=course.tno
    创建格式
    creat view 视图名称
    as
    select 列名 from 表名 --要执行的代码

    修改格式:
    alter view
    as
    select 列名 from 表名 --修改后要执行的代码

    使用方式:
    在用的数据库-视图-右键视图名称-设计-可以改别名

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

    创建格式:
    create trigger 触发器名称(命名规范:动作_表名称)--动作:insert,delect,update
    on 哪个表 --on 针对哪个表
    for 哪个动作/ after 哪个动作--for是命令执行完毕之后再触发,after与for意思一样。
    as
    select *from 哪个表

    create trigger 触发器名称(命名规范:动作_表名称)
    on 表名
    instead of delect --instead of是替换命令
    as
    select *from deleted --deleted要删除的信息

    delect from 表名 --执行受到触发器阻拦,执行select *from 哪个表,不会删除

    修改:
    alter trigger 触发器名称(命名规范:动作_表名称)
    on 哪个表
    for 哪个动作
    as
    update 表名 set 列名=''where 列名=''

    级联删除:
    create trigger 触发器名称(命名规范:动作_表名称)
    on 表名
    instead of delect
    as
    declare @a varchar(max); --声明变量
    select @a =列名2 from deleted;--要删除的信息赋值到变量里
    delete from 表1 where 列名1=@a; --相关的列
    delete from 表2 where 列名2=@a;

    视图:create view 表1_表2
    as
    select *from 表1,表2 where 列1=列2 (列1和列2 是主外键关系)
    select *from 表1_表2
    防止误删
    create trigger delete_表名
    on 表名
    instead of delete
    as
    declare @a nvarchar(max);
    select @a =列名 from deleted;
    if @a='数据'
    begin
    print'内容' ;--在消息框中打印出来
    end
    else
    begin
    delete from 表名 where 列名=@a;
    end

    delete from 表名 where 列名='数据' --只要有不让删的数据,整个动作都是错误的,所有让删除的都不会删除

    注意:凡是修改都要create 改成alter ,再执行一遍

  • 相关阅读:
    GIT的使用及心得
    XCODE的演变及使用经验分享
    软件工程学习计划
    这只是一个测试,注意,这只是一个测试
    软工实践---个人
    调研Android开发环境的发展演变
    软件工程的实践项目的自我目标
    调研ANDRIOD平台的开发环境的发展演变
    软件工程的实践项目的自我目标
    Leetcode题库——39.组合总和
  • 原文地址:https://www.cnblogs.com/sunshuping/p/5582000.html
Copyright © 2011-2022 走看看