黑马程序员技术交流社区

标题: [云计算之大数据] Java面试题之数据库存储过程与触发器 [打印本页]

作者: 播妞    时间: 2017-8-17 15:50
标题: [云计算之大数据] Java面试题之数据库存储过程与触发器
   这个问题非常考验个人能力水平和自我积累!这样的问题拿高薪必看哦!
本帖隐藏的内容
  • create procedure insert_Student (_name varchar(50),_age int ,out _id int)
  •   begin
  •   insert into student value(null,_name,_age);
  •   select max(stuId) into _id from student;
  •   end;
  •   call insert_Student('wfz',23,@id);
  •   select @id;
  •   mysql> create trigger update_Student BEFORE update on student FOR EACH ROW
  •   -> select * from student;

[color=rgb(51, 51, 51) !important]复制代码



  触发器不允许返回结果
  
[color=rgb(51, 51, 51) !important]复制代码



  mysql的触发器目前不能对当前表进行操作
  
[color=rgb(51, 51, 51) !important]复制代码



  这个例子不是很好,最好是用删除一个用户时,顺带删除该用户的所有帖子
  这里要注意使用OLD.id
  触发器用处还是很多的,比如校内网、开心网、Facebook,你发一个日志,自动通知好友,其实就是在增加日志时做一个后触发,再向通知表中写入条目。因为触发器效率高。而UCH没有用触发器,效率和数据处理能力都很低。
  存储过程的实验步骤:
  
[color=rgb(51, 51, 51) !important]复制代码


  +------+
  | @pid |
  +------+
  | 3 |
  +------+
  1 row in set (0.00 sec)
  mysql> select * from article1;
  +----+--------------+------+
  | id | title | bid |
  +----+--------------+------+
  | 1 | test | 1 |
  | 2 | chuanzhiboke | 1 |
  | 3 | 传智播客 | 1 |
  +----+--------------+------+
  3 rows in set (0.00 sec)
  触发器的实验步骤:
  
[color=rgb(51, 51, 51) !important]复制代码


  还有,每插入一个帖子,都希望将版面表中的最后发帖时间,帖子总数字段进行同步更新,用触发器做效率就很高。下次课设计这样一个案例,写触发器时,对于最后发帖时间可能需要用declare方式声明一个变量,或者是用NEW.posttime来生成。


作者: Oliverwqcwrw    时间: 2017-8-19 17:05
赞赞赞赞




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2