文档章节

mysql触发器select into 总是为空的问题

_小_波_
 _小_波_
发布于 2015/12/21 16:48
字数 435
阅读 1009
收藏 2

第一次写触发器。


实现的功能:


插入机构(bzsh_jg)的时候同步插入一条数据到control_unit表中。


先要根据隶属机构号(字段lsjgh)去查询父机构的数据,然后在插入的时候放入control_unit表的parentid这个字段。


代码如下:

delimiter $
create trigger bzsj_jg_insert
after insert on bzsh_jg
for each row 

begin

declare indexcode varchar(64);
declare controlunitname varchar(64);
declare parentid int;
declare unitlevel int;
declare paranetUnitLevel int;
declare strrev1 varchar(64);

set indexcode = new.jgh;
set controlunitname = new.jgmc;
set  strrev1 = new.lsjgh;

if new.lsjgh is null then
	
	set parentid = 0;
	set unitlevel = 0;
	
else

	select control_unit_id, unit_level  into parentid, paranetUnitLevel from control_unit where index_code = new.lsjgh;
	set unitlevel = paranetUnitLevel + 1;
	
end if;

insert into control_unit ( index_code, name, parent_id,unit_level,use_stream_sv,sequence_idx,operator_id, create_time,update_time,str_rev_1) 
									values ( indexcode, controlunitname,parentid,unitlevel, false,0,0,now(),now(),strrev1);

end$

测试的时候,parentid总是为空,把26行最后的new.lsjgh换成正常的数值就没问题了,比如:

select control_unit_id, unit_level  into parentid, paranetUnitLevel from control_unit where index_code = '123';


开始以为是select into 语句中不能传入 new的参数,调试好久才发现是字段长度的问题, control_unit 表的 index_code 长度 和 bzsh_jg 表中的 lsjgh 长度不一样,虽然都是varchar

index_code 是 varchar(64),lsjgh只有 varchar(20) ,插入bzsh_jg的时候lsjgh字段被自动截取为20个字符了,所以查到的结果为空。


结论:插入bzsh_jg表的时候lsjgh的长度被自动截取了,所以导致查出的数据为空.当字段类型不一致的情况,比如一个是int一个是varchar,也会出现这种情况。


顺便吐槽一下第三方公司的表命名和字段命名,全是拼音缩写,看的我蛋都碎了,太扯了。


© 著作权归作者所有

_小_波_
粉丝 1
博文 4
码字总数 1615
作品 0
杭州
程序员
私信 提问
mysql 查询json编码过的数据

网站的数据原来是gbk的编码,改版之后为utf8的编码。有一部分的参数数据用json打包过后存到数据库的。 中文数据编码过后,就变成了 ["GSM","u8054u901a3G"] 前台显示的是 “联通3G”,将其打...

qii
2014/01/28
0
0
PostgreSQL 与 MySQL 常用命令对照

有很多 MySQL 的用户在使用 PostgreSQL 时,对于 PostgreSQL 客户端()的常用命令不是很熟悉,有时甚至会感到困惑,在此罗列 MySQL 客户端 与 PostgreSQL 客户端 常用命令的对照关系,方便大...

东明
2018/11/20
0
0
《MySQL必知必会》读书笔记(四) 22~30章 完结篇

1、视图 视图不包含表中应该有的任何列或数据,它包含的是一个SQL查询。在视图创建之后,可以用于表基本相同的方式利用它们。可以对视图执行SELECT操作,过滤和排序数据,将视图联结到其他视...

一万
2016/02/08
329
0
mysql磁盘查询和查询优化的几点问题

mysql中有没有类似于sql server查询本地磁盘使用情况的语句呢?select TABLE_SCHEMA能查询出表空间大小,磁盘大小通过mysql能否得到呢? 还有select count(*)如何最大的优化呢?上百万的数据...

缪斯的情人
2012/11/22
251
5
spark-mysql:SQLException: Subquery returns more than 1 row

SQLException: Subquery returns more than 1 row 在工作中遇到一个写入数据库的问题 写入数据库的dataFrame结构数据如下 dataFrame1: dataFrame2: mysql的建表语句 出现的错误 在写第一条...

利伊奥克儿
03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

linux下ctrl+c中止不了

有一台centos7的服务器,ctrl+c无效,并且tail -f也无效,只能关掉终端或者crtl+z放入后台再删掉,但是ping的时候使用ctrl+c是有效果的。 出现这种情况的原因可能是因为有人要使用ruby安装r...

gaolongquan
18分钟前
0
0
Android三年工作面经

工作三年出来看看新的机会,依次面试过如下公司: 小米(北京) iHandy(北京) 涂鸦智能(杭州) 微软(北京) 宜信(北京) 蚂蚁金服(杭州) 瓜子二手车(北京) 高德(北京) 基本上投递的简历都得到了面...

JerryLin123
21分钟前
1
0
开发函数计算的正确姿势——tensorflow serving

前言 首先介绍下在本文出现的几个比较重要的概念: 函数计算(Function Compute): 函数计算是一个事件驱动的服务,通过函数计算,用户无需管理服务器等运行情况,只需编写代码并上传。函数计...

阿里云云栖社区
24分钟前
5
0
社区角色(Kubernetes社区Maintainer是什么角色?)

社区成员按照角色,分为member、reviewer、approver、subproject owner。 下面我们介绍一下每个角色的职责和要求。 member reviewer approver subproject owner...

恋恋美食
41分钟前
0
0
【JavaScript】callee 与 caller

callee callee是函数参数arguments对象的一个属性,它指向参数arguments对象所在的函数自身。 function foo (x) {console.log(arguments.callee);return x;}foo(); 从控制台中可以看...

小草先森
45分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部