sql触发器发短信方案

小吵 2017-09-07 05:12:09
各位好,我有一个功能想实现,求教一下大家
当sql的表中每增加一条记录时,就往相关的联系人表中的手机号码发一条信息(手机短信)
不知道如何实现好?
1.应该要用到短信猫吧
2。是直接在sql中写触发器好还是用其它的程序比如C在外面写?

多谢大家给建议
...全文
1433 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
小吵 2017-10-04
  • 打赏
  • 举报
回复
引用 12 楼 yenange 的回复:
[quote=引用 11 楼 Evanlei 的回复:] [quote=引用 10 楼 z10843087 的回复:] [quote=引用 8 楼 Evanlei 的回复:] 但前台用什么呢 数据库的添加是ERP中操作的,ERP软件不能修改添加功能 我就想监测数据库的变化,然后变化时发个信息(或邮件),如果不用触发器,还有什么办法? 如果用触发器,它只做个触发的小动作,发信息(或邮件)这样的任务放另外的程序里,这个程序是不是要常驻内存?用什么时候写比较好呢?C,还是python? php应该不行吧 编程语言知识有限,希望大家别笑话!
c#就可以。也就是楼上说的CLR。[/quote] 多谢指点迷津![/quote] 数据库一般只做数据处理, 尽量不要混合其它的逻辑。 SqlClr 并不是不可以, 只是一般不要用这样的“重器”——它违反了程序设计的原则, 只能是不得已而为之。 SqlClr 调试不方便, 输出日志也不方便, 部署也比较麻烦, 出了问题难以跟踪追查, 即使我写过很多的 SqlClr 存储过程和函数, 依然敬畏。 发短信, 其实是一个并不简单的操作, 短信发出了得有返回值(确定是否正常发出), 如果要更精确, 还得获取其报告(确定用户是否正常接收), 这么复杂的逻辑根本不是SqlClr 能顺利完成的了, 即使能写成也不好修改和扩展,建议你直接写程序更适合。 没事就结贴吧。 [/quote] 确实是这样,我在sql里写了一个发邮件的触发器,发现占用内存上升挺厉害的。 写了几个存储过程,定时执行将数据写入新的表格以便调用,这个好像影响倒不是那么大。 短信还是在外面写比较好,定时查询这样比较好。
小吵 2017-10-03
  • 打赏
  • 举报
回复
引用 10 楼 z10843087 的回复:
[quote=引用 8 楼 Evanlei 的回复:] 但前台用什么呢 数据库的添加是ERP中操作的,ERP软件不能修改添加功能 我就想监测数据库的变化,然后变化时发个信息(或邮件),如果不用触发器,还有什么办法? 如果用触发器,它只做个触发的小动作,发信息(或邮件)这样的任务放另外的程序里,这个程序是不是要常驻内存?用什么时候写比较好呢?C,还是python? php应该不行吧 编程语言知识有限,希望大家别笑话!
c#就可以。也就是楼上说的CLR。[/quote] 多谢指点迷津!
吉普赛的歌 2017-10-03
  • 打赏
  • 举报
回复
可以做一个非常简单的触发器, 触发器只做一个动作: 把需要发短信的记录保存到新的短信表(表结构可参考如下脚本)
IF OBJECT_ID('sms_data') IS NOT NULL
	DROP TABLE sms_data
GO
CREATE TABLE sms_data(
	id BIGINT IDENTITY(1,1) PRIMARY KEY,
	[smsContent] NVARCHAR(1000) NOT NULL,
	[requestId] INT NOT NULL DEFAULT(-999999999),   --发送短信时的请求id, 为-999999999表示未发
)
GO
你写一个 Windows 服务的程序, 每 30 秒检测一次这个表是否有新的记录需要发送短信, 如果有则发短信。 当然, 这个表你可以根据 短信的 web service 具体的参数来修改。
吉普赛的歌 2017-10-03
  • 打赏
  • 举报
回复
引用 11 楼 Evanlei 的回复:
[quote=引用 10 楼 z10843087 的回复:] [quote=引用 8 楼 Evanlei 的回复:] 但前台用什么呢 数据库的添加是ERP中操作的,ERP软件不能修改添加功能 我就想监测数据库的变化,然后变化时发个信息(或邮件),如果不用触发器,还有什么办法? 如果用触发器,它只做个触发的小动作,发信息(或邮件)这样的任务放另外的程序里,这个程序是不是要常驻内存?用什么时候写比较好呢?C,还是python? php应该不行吧 编程语言知识有限,希望大家别笑话!
c#就可以。也就是楼上说的CLR。[/quote] 多谢指点迷津![/quote] 数据库一般只做数据处理, 尽量不要混合其它的逻辑。 SqlClr 并不是不可以, 只是一般不要用这样的“重器”——它违反了程序设计的原则, 只能是不得已而为之。 SqlClr 调试不方便, 输出日志也不方便, 部署也比较麻烦, 出了问题难以跟踪追查, 即使我写过很多的 SqlClr 存储过程和函数, 依然敬畏。 发短信, 其实是一个并不简单的操作, 短信发出了得有返回值(确定是否正常发出), 如果要更精确, 还得获取其报告(确定用户是否正常接收), 这么复杂的逻辑根本不是SqlClr 能顺利完成的了, 即使能写成也不好修改和扩展,建议你直接写程序更适合。 没事就结贴吧。
OwenZeng_DBA 2017-09-16
  • 打赏
  • 举报
回复
引用 8 楼 Evanlei 的回复:
但前台用什么呢 数据库的添加是ERP中操作的,ERP软件不能修改添加功能 我就想监测数据库的变化,然后变化时发个信息(或邮件),如果不用触发器,还有什么办法? 如果用触发器,它只做个触发的小动作,发信息(或邮件)这样的任务放另外的程序里,这个程序是不是要常驻内存?用什么时候写比较好呢?C,还是python? php应该不行吧 编程语言知识有限,希望大家别笑话!
c#就可以。也就是楼上说的CLR。
Q315054403 2017-09-16
  • 打赏
  • 举报
回复
写个CLR,在触发器里调用 别把触发器想得是洪水猛兽,RDBMS提供了这功能,肯定有它的适用场景 开发、设计质量低,别怪是触发器的问题
小吵 2017-09-15
  • 打赏
  • 举报
回复
但前台用什么呢
数据库的添加是ERP中操作的,ERP软件不能修改添加功能
我就想监测数据库的变化,然后变化时发个信息(或邮件),如果不用触发器,还有什么办法?
如果用触发器,它只做个触发的小动作,发信息(或邮件)这样的任务放另外的程序里,这个程序是不是要常驻内存?用什么时候写比较好呢?C,还是python? php应该不行吧

编程语言知识有限,希望大家别笑话!
吉普赛的歌 2017-09-07
  • 打赏
  • 举报
回复
1.应该要用到短信猫吧 --发短信有两种方式, 一是短信猫, 二是短信接口(WebService); webservice 更好, 效率高不易出错, 短信猫维护相当麻烦不推荐。 2。是直接在sql中写触发器好还是用其它的程序比如C在外面写? --直接写程序调用 web service 就好了, 与数据库没什么关系。
繁花尽流年 2017-09-07
  • 打赏
  • 举报
回复
引用 楼主 Evanlei 的回复:
各位好,我有一个功能想实现,求教一下大家 当sql的表中每增加一条记录时,就往相关的联系人表中的手机号码发一条信息(手机短信) 不知道如何实现好? 1.应该要用到短信猫吧 2。是直接在sql中写触发器好还是用其它的程序比如C在外面写? 多谢大家给建议
你都能知道记录增加了,直接程序在返回增加成功后跟着直接发短信不就好了。触发器能少用尽量少用。
OwenZeng_DBA 2017-09-07
  • 打赏
  • 举报
回复
引用 楼主 Evanlei 的回复:
各位好,我有一个功能想实现,求教一下大家 当sql的表中每增加一条记录时,就往相关的联系人表中的手机号码发一条信息(手机短信) 不知道如何实现好? 1.应该要用到短信猫吧 2。是直接在sql中写触发器好还是用其它的程序比如C在外面写? 多谢大家给建议
写程序比较好。想好触发的逻辑。
二月十六 2017-09-07
  • 打赏
  • 举报
回复
用程序实现更好,数据库中的数据怎么插入的?插入的时候发送短信。有很多短信运营商,调用他们接口就可以发送短信。
繁花尽流年 2017-09-07
  • 打赏
  • 举报
回复
引用 楼主 Evanlei 的回复:
各位好,我有一个功能想实现,求教一下大家 当sql的表中每增加一条记录时,就往相关的联系人表中的手机号码发一条信息(手机短信) 不知道如何实现好? 1.应该要用到短信猫吧 2。是直接在sql中写触发器好还是用其它的程序比如C在外面写? 多谢大家给建议
你都能知道记录增加了,直接程序在返回增加成功后跟着直接发短信不就好了。触发器能少用尽量少用。
引用 5 楼 Evanlei 的回复:
[quote=引用 3 楼 zengertao 的回复:] [quote=引用 楼主 Evanlei 的回复:] 各位好,我有一个功能想实现,求教一下大家 当sql的表中每增加一条记录时,就往相关的联系人表中的手机号码发一条信息(手机短信) 不知道如何实现好? 1.应该要用到短信猫吧 2。是直接在sql中写触发器好还是用其它的程序比如C在外面写? 多谢大家给建议
你都能知道记录增加了,直接程序在返回增加成功后跟着直接发短信不就好了。触发器能少用尽量少用。[/quote] 你好,这个增加记录是在前台ERP中完成的,前台的ERP没办法做开发,所以我想直接在数据库中增加触发器来处理这个问题,如果不用触发器来处理这个问题,其它方式还有没有更好的建议? 另外触发器为什么会影响数据库的效率呢,我最近写了一个发邮件的触发器,发现数据库的内存占用率非常高[/quote] 6#已经回答的很好了。如果你坚持希望SQLSERVER来做这件事的话,我建议你用触发器来做一个insert的短信待发表。然后用存储过程来定时批量处理待发短信。无论怎样都比你直接在触发器里处理好
吉普赛的歌 2017-09-07
  • 打赏
  • 举报
回复
引用 5 楼 Evanlei 的回复:
你好,这个增加记录是在前台ERP中完成的,前台的ERP没办法做开发,所以我想直接在数据库中增加触发器来处理这个问题,如果不用触发器来处理这个问题,其它方式还有没有更好的建议? 另外触发器为什么会影响数据库的效率呢,我最近写了一个发邮件的触发器,发现数据库的内存占用率非常高
触发器本身会影响表正常的 insert , update , delete 操作, 本来 1 ms 能完成的事, 要 1 s 才能完成, 而且还会阻塞其它的一些动作, 你觉得是否有影响? 触发器并不是不能用, 只是尽量少用慎用。特别是增删改频繁的表不要用, 重要的业务表尽量不要用。 触发器到底降低了多少效率, 取决于触发器的逻辑, 如果触发器执行了一个大的操作(比如:你所说的发邮件), 这种影响就是比较大的。这跟占用多少内存没关系, 只是因为它影响了数据库的性能。因为数据库无一不是希望一个操作尽快完成, 再开始处理下一下操作。 当然, 你这里根本就用不上触发器, 不需要考虑这个了。
小吵 2017-09-07
  • 打赏
  • 举报
回复
引用 3 楼 zengertao 的回复:
[quote=引用 楼主 Evanlei 的回复:] 各位好,我有一个功能想实现,求教一下大家 当sql的表中每增加一条记录时,就往相关的联系人表中的手机号码发一条信息(手机短信) 不知道如何实现好? 1.应该要用到短信猫吧 2。是直接在sql中写触发器好还是用其它的程序比如C在外面写? 多谢大家给建议
你都能知道记录增加了,直接程序在返回增加成功后跟着直接发短信不就好了。触发器能少用尽量少用。[/quote] 你好,这个增加记录是在前台ERP中完成的,前台的ERP没办法做开发,所以我想直接在数据库中增加触发器来处理这个问题,如果不用触发器来处理这个问题,其它方式还有没有更好的建议? 另外触发器为什么会影响数据库的效率呢,我最近写了一个发邮件的触发器,发现数据库的内存占用率非常高
09-SSH企业案例_CRM-客户管理系统(6天) day01_SVN安装_CRM注册页面 day02_登录_客户管理模块 day03_客户管理&联系人管理 day04_联系人管理 day05_CRM权限拦截器_SSH纯注解整合 day06_Easyui&列表展示 10-Oracle数据库(学习4天) Oracle_day01,安装_函数查询and条件查询 Oracle_day02,多表查询_子查询_集合运算 Oracle_day03,DDL,DML,视图,PLSQL编程 Oracle_day04,游标,存储过程,存储函数,触发器 11-Maven(学习2天) Maven_day01._Maven安装.Maven整合SSH Maven_day02.Maven整合SSH.私服安装配置 12-SSH企业案例2_ERP_项目整合(学习15天) ERP_day01_ERP简介,软件设局.环境搭建.部门管理列表查询 ERP_day02_Dep部门表的_条件查询,分页,增加,删除 ERP_day03_Dep代码抽取_代码生成器_员工管理完善_商品管理完善 ERP_day04_登录与密码管理_菜单动态读取_静态页面传参 ERP_day05_采购新增_订单_订单详细实现 ERP_day06_采购查询_审核_确认_入库 ERP_day07_销售查询_出库_确认出库_挂菜单 ERP_day08_按类型销售饼状图_按年份销售趋势图 ERP_day09JavaMail发送预警邮件_使用Quartz任务调度框架_自动发送邮件 ERP_day10_PIO框架应用_订单导入_导出_HSSF读写Excel表格档案 ERP_day11_CXF框架_红日物流BOS系统_ERP物流信息管理 ERP_day12_Easyui--Thee插件_权限管理_权限菜单_用户角色权限 ERP_day14_Shoir颗粒认证-redis缓存机制提升软件性能_svn协作开发 ERP_day15项目展示 13-Mybatis(学习2天) MyBatis_day01;mybatis简介--入门 MyBatis_day02.输入输出映射.动态sql-关联查询.myBatis整合spring,逆向工程 14-SpringMVC(学习2天) SpringMvc_day01.spring入门-springMVC三大核心器(视图解析器,处理器映射器and适配器).springMvc整合myBatis SpringMvc_day02高级参数.上传图片.JSON数据交互.拦截器 15-SSM企业案例-客户管理系统(学习1天) SpringMvc_SSM综合练习.分页.增删改查 16-SSM分布式案例-互联网商城(学习13天) day01_电商介绍--互联网术语-SOA-分布式-集群介绍-环境配置-框架搭建 day02_Dubbo介绍_dubbo框架整合_商品列表查询实现_分页_逆向工程 day03_Git day04_门户网站介绍&商城首页搭建&内容系统创建&CMS实现 day05_首页轮播图显示实现,Redis环境搭建,Redis实现缓存 day06_solr索引库搭建&solr搜索功能实现&图片显示问题解决 day07_solr集群搭建_全局异常处理 day08_activeMQ介绍_搭建_解决同步索引库问题 day09_FreeMark入门_静态化页面标签介绍_静态化页面实现 day10_Nginx代理详解..单点登录系统工程搭建_接口文档讲解 day11_单点登录系统实现_用户名回显_cookie跨域问题详解 day12 day13 17品优购电商系统开发(学习20天) 1分布式框架-Dubbox 2品牌管理 3规格及模板管理 4安全框架与商家入驻审核 5商品管理1 6商品管理2 7商品管理3 8广告管理与缓存解决方案 9搜索解决方案-Solr-1 10搜索解决方案-Solr-2 11搜索解决方案-Solr-3 12网页静态化解决方案-Freemarker 13消息中间件解决方案JMS 14SpringBoot框架与短信解决方案 15单点登录解决方案CAS 16购物车解决方案 17跨域解决方案与提交订单 18微信扫码支付 19秒杀解决方案 20品优购系统业务分析 1集群概述 2Zookeeper集群 2品优购电商系统部署 3SolrCloud集群 4RedisCluster集群 5开源数据库中间件-MyCat 6Nginx的安装与启动 7Nginx静态网站部署 8

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧