关闭

触发器及存储过程 同时增删模糊匹配字段

标签: mysql存储数据库
602人阅读 评论(0) 收藏 举报
分类:

最近想写一个存储过程,过程为边插入边删除,其实本来可以利用触发器完成的,但是发现触发器有缺陷,于是改为存储过程。

在触发器中,可以实现,在A表中插入,在B表中同时插入,或者同时删除。也可以是,在A表中插入,在B表中删除。此时必须指定,插入和删除的字段的精确性,并且A、B表中必须拥有同样的唯一字段,比如id。

delimiter//
create trigger in_de
#注意无论是insert或是delete后面都是接on
after insert on test2 for each ROW
begin
delete from test1 where id = new.id
end //



我的目标是实现insert和delete同时增删模糊匹配字段,这种方式看来也是可以实现,但是需要自己手动新增一列id,同时写上insert 语句。那么,存储过程能否实现呢。

delimiter//
create procedure in_de(in column_name varchar(255),in a varchar(255))
begin
insert into test2 select * from test1 where column_name like '%a%';
delete from test2 where column_name like '%a%';
end //

利用普通存储过程可以发现,当我选择利用模糊匹配中的where column_name like '%a%‘ 来进行插删时,发现列名无法自己指定,那么就意味着like模糊匹配失去意义。所以必须寻找新的出路。在此本文采用procedure+prepare来实现。

<pre name="code" class="sql">DROP PROCEDURE IF EXISTS insert_delete;
DELIMITER //
CREATE PROCEDURE insert_delete(IN a VARCHAR(255),IN b VARCHAR(255))
BEGIN
#应用格式set + prepare from + execute(注意空格)
SET @sql1=CONCAT('insert into errordata select * from test2 where ',a,' like \'%',b,'%\'');
PREPARE s1 FROM @sql1;
EXECUTE s1;
SET @sql2=CONCAT('delete from test1 where ',a,' like \'%',b,'%\'');
PREPARE s2 FROM @sql2;
EXECUTE s2;
END//
DELIMITER ;
call insert_delete('地址','广东省');








0
0
查看评论

存储过程中怎样实现模糊匹配

<br />我知道的有两种方式:第一种就是事先在字符后加上‘%’这样的话就如下面所写的一样  <br />也就是说@mvname参数的最后一个字符时‘%’<br />可是当我进行模糊查询时,得不到结果……总是查不到可是当我进行模糊查询时,得不到结果……总...
  • mojieqiong
  • mojieqiong
  • 2010-11-16 22:23
  • 505

SQL 之 模糊匹配

模糊匹配 关键字:LIKE , SOUNDEX , DIFFERENCE   1. 模式匹配 在WHERE子句中使用LIKE操作符来查找针对列值的某个部分的匹配。LIKE + 通配符 来指定。 SELECT MovieTitle AS ‘Movie’ FROM ...
  • ForestRound
  • ForestRound
  • 2016-10-06 07:47
  • 2650

SQL Server 存储过程和触发器sql语句练习

SQL Server 存储过程和触发器sql语句练习
  • hoho_12
  • hoho_12
  • 2015-12-18 22:25
  • 1611

Elasticsearch中同时实现对某一字段的精确查询和模糊查询的方法

"source.strain": { "type": "muti_field", "fields": { "...
  • u010585120
  • u010585120
  • 2015-10-21 17:56
  • 7726

数据库查询模糊匹配

执行数据库查询时,有完整查询和模糊查询之分。一般模糊语句格式如下:SELECT 字段 FROM 表 WHERE 某字段 LIKE 条件; 其中,关于条件,SQL提供了四种匹配模式:%:表示零个或多个字符。可以匹配任意类型和任意长度的字符,有些情况下若是中文,请使用两个百分号(%%)表示。select...
  • u014137165
  • u014137165
  • 2017-04-10 16:26
  • 3076

SQL判断某个表、存储过程、触发器、函数、某个字段是否存在

1、存储过程 if()
  • xiongmao000738
  • xiongmao000738
  • 2011-11-25 13:26
  • 1136

在一个触发器里面如何判断触发器的增删改操作

 当一个触发器里面同时存在insert,update,delete时,如何按照不同的操作而触发不同的触发器呢?   但是在效率上没有分开写三个触发器好 ,看不同的需求吧!    如有A、B两表。B表中记录取自A表 A: ID(PK),  &#...
  • XMM_1030
  • XMM_1030
  • 2014-10-09 14:53
  • 908

oracle中的截取,模糊匹配小结

截取: 1,去掉最后一个字符 >>>>>>>>>>>>>>>>substr截取 select substr('abcd',0,length('abcd')-1) fr...
  • xb12369
  • xb12369
  • 2014-03-13 10:51
  • 4713

触发器与存储过程的相互调用

<br />触发器与存储过程互调<br />--触发器如何调用存储过程<br />create trigger test on table<br />for insert<br />as<br />exec 存储过程名<b...
  • tearsmo
  • tearsmo
  • 2011-05-27 11:11
  • 3290

SQL 多字段模糊匹配关键字查询

http://www.west.cn/info/html/wangluobiancheng/Mssql/20080505/72303.html 我们开发数据库应用时,常常需要用到模糊查询。如果同一个条件需要匹配很多字段怎么办呢?通常,程序员会每个字段都在SQL中“field lik...
  • aosica321
  • aosica321
  • 2016-10-28 17:29
  • 2605
    个人资料
    • 访问:46757次
    • 积分:804
    • 等级:
    • 排名:千里之外
    • 原创:31篇
    • 转载:9篇
    • 译文:0篇
    • 评论:11条
    我的QQ
    963570357
    最新评论