Mysql存储过程相关

本文探讨了在数据库中进行多表数据一致性校验的方法,通过创建存储过程实现对学生信息的动态查询。当学生名称变更时,如何检查所有相关表中的数据是否同步更新。示例展示了如何使用存储过程和FIND_IN_SET函数来批量检查多个学生ID的数据变更情况,同时提醒注意存储过程参数长度设置的重要性。
摘要由CSDN通过智能技术生成

今天测试一条数据在多个数据表里。

学生A在学生库、师生关系表、少先队员表、足球队、排球队中均有。

有部分学生申请名称变更。如何进行动态查询几个学生的名称数据在各个表中的显示,校验是否都同步更新了?

学生id在各个表中均存在。

CREATE  PROCEDURE `student_info`(student_id varchar(500))
BEGIN 
/*学生主表*/
SELECT * FROM student t1 WHERE id=student_id;
/*师生关系表 无 */
SELECT * FROM teacher_student t2 WHERE t2.student_id=student_id;
/*协议审核数据*/
SELECT * FROM sxdy t3  WHERE t3.student_id=student_id;
SELECT * FROM footballteam t4 WHERE t4.student_id=student_id;
END

变更程序执行某个学生名称变更之后,如果检查四张表的数据是否正确变更,需要修改sql四次,并执行四次,在修改无错误的情况下,才能看到数据是否正常变更。

通过存储过程,只要执行call student_info('XXXX') ;就会得到四个结果。

赠送小知识:

1、如果通过某种条件得到多个学生的Id,比如sql

GROUP_CONCAT

 存储过程就可以使用FIND_IN_SET函数。

2、存储过程中参数的给定长度要尽可能的大,否则会截取传参的长度,不然就像我今天一样,明明穿了10个参数,结果就查询出来4个。数据又没有什么问题。应该全部查出来的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值