zoukankan      html  css  js  c++  java
  • mysql trigger 备忘

    最近用mysql有这么一个需求

    item表:id,item,url,websiteid

    website表:id,domain

    item表示从不同网站获取的信息

    website表示获得信息的网站,其中的web字段是该网站的域名

    显然item表的websiteid和website表的id是关联的。

    现在想要做到插入一条item记录(item,url,websiteid)

    一种方法是全都在应用程序那边做。应用程序拿到url,分割出域名,先去website表查查看有没有,没有的话新增一条。这样就可以拿到websiteid,再将item,url连同websiteid插入到item表。

    另一种方法就是这里要将的trigger。当然用存储过程也可以,但这方面我还没研究。

    在item表上设置trigger,作用是应用程序只要插入item,url即可,其他的工作由trigger来完成。

     1 CREATE DEFINER=`root`@`%` TRIGGER `db`.`item_insert` BEFORE INSERT ON `item` FOR EACH ROW
     2 BEGIN
     3 declare d varchar(200);
     4 declare c int;
     5 set d = substring_index(NEW.url,'/',3);
     6 set c = (select count(*) from db.website where domain=d);
     7 if c=0 
     8 then
     9     insert into db.website (domain) values (d);
    10 end if;
    11 set c = (select id from db.website where domain=d);
    12 set NEW.websiteid = c;
    13 END
  • 相关阅读:
    ESlint中console.log报错问题
    for、forEach、for in、for of用法
    如何覆盖elementUI样式
    什么是闭包(closure),为什么要用它?
    写一个通用的事件侦听器函数
    javascripts 浅拷贝和深拷贝
    箭头函数
    用 async/await 来处理异步
    DOM事件类
    arguments 详解
  • 原文地址:https://www.cnblogs.com/digdig/p/10331361.html
Copyright © 2011-2022 走看看