SQLServer触发器调用JavaWeb接口

本文涉及的产品
RDS SQL Server Serverless,2-4RCU 50GB 3个月
推荐场景:
云数据库 RDS SQL Server,基础系列 2核4GB
简介: 使用SQLServer触发器进行调用接口实现不同系统同步。

这几天接到一个需求需要吧不同系统的数据库进行同步,需要我做一个中间平台进行连接,瞬间就想到了触发器调用接口然后通过API进行传递再写入另一个数据库。
sqlServer触发器调用JavaWeb接口
1、开启 Ole Automation Procedures
sqlServer要想调用web接口,就要使用自带的存储过程。而这些存储过程2005版本以后默认时关闭的,所以要先开启。

 
sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ole Automation Procedures';
GO

关闭 Ole Automation Procedures



sp_configure 'show advanced options', 1;
GO
RECONFIGURE;
GO
sp_configure 'Ole Automation Procedures', 1;
GO
RECONFIGURE;
GO
EXEC sp_configure 'Ole Automation Procedures';
GO

关闭高级选项

sp_configure 'show advanced options', 0;
GO
RECONFIGURE;
GO

然后就可以进行写触发器,因为我这边表的内容比较多,大家直接看代码就好了。

CREATE TRIGGER [dbo].[kingdee]
ON [dbo].[称重信息]
WITH EXECUTE AS CALLER
FOR INSERT
AS
BEGIN
 -- Type the SQL Here.
    DECLARE @fbillno int;
    DECLARE @carid varchar(4000);
    DECLARE @type varchar(4000);
    DECLARE @sendplace varchar(4000);    
    DECLARE @consignee varchar(4000);        
    DECLARE @material varchar(4000);
    DECLARE @specification varchar(4000);
    DECLARE @gw varchar(4000);
    DECLARE @tare varchar(4000);    
    DECLARE @nw varchar(4000);
    DECLARE @kw varchar(4000);
  DECLARE @aw varchar(4000);
    DECLARE @price varchar(4000);
    DECLARE @money varchar(4000);
    DECLARE @zfxs varchar(4000);
    DECLARE @square varchar(4000);
    DECLARE @weighingcost varchar(4000);
    DECLARE @gwtime varchar(4000);
    DECLARE @taretime varchar(4000);
    declare @url varchar(4000);
    declare @object int;
    declare @responseText varchar(4000);
    
    SELECT @fbillno = (select 流水号 from inserted);
    SELECT @carid = (select 车号 from inserted);
    SELECT @type = (select 过磅类型 from inserted);
    SELECT @sendplace = (select 发货单位 from inserted);
    SELECT @consignee = (select 收货单位 from inserted);
    SELECT @material = (select 货名 from inserted);
    SELECT @specification = (select 规格 from inserted);    
    SELECT @gw = (select 毛重 from inserted);
    SELECT @tare = (select 皮重 from inserted);
    SELECT @nw = (select 净重 from inserted);    
    SELECT @kw = (select 扣重 from inserted);
    SELECT @aw = (select 实重 from inserted);
    SELECT @price = (select 单价 from inserted);    
    SELECT @money = (select 金额 from inserted);
    SELECT @zfxs = (select 折方系数 from inserted);
    SELECT @square = (select 方量 from inserted);    
    SELECT @weighingcost = (select 过磅费 from inserted);
    SELECT @gwtime = (select 毛重时间 from inserted);
    SELECT @taretime = (select 皮重时间 from inserted);
    SELECT @url = 'http://ip/saveweight/' + CONVERT(INT, @fbillno)+'/'+ CONVERT(VARCHAR, @carid)
    +'/'+ CONVERT(VARCHAR, @type)+'/'+ CONVERT(VARCHAR, @sendplace)+'/'+ CONVERT(VARCHAR, @consignee)+'/'+ CONVERT(VARCHAR, @material)
    +'/'+ CONVERT(VARCHAR, @specification)+'/'+ CONVERT(VARCHAR, @gw)+'/'+ CONVERT(VARCHAR, @tare)+'/'+ CONVERT(VARCHAR, @nw)
    +'/'+ CONVERT(VARCHAR, @kw)+'/'+ CONVERT(VARCHAR, @aw)+'/'+ CONVERT(VARCHAR, @price)+'/'+ CONVERT(VARCHAR, @money)
    +'/'+ CONVERT(VARCHAR, @zfxs)+'/'+ CONVERT(VARCHAR, @square)+'/'+ CONVERT(VARCHAR, @weighingcost)+'/'+ CONVERT(VARCHAR, @gwtime)
    +'/'+ CONVERT(VARCHAR, @taretime);
    print @url;
--     insert into one (id, name) VALUES (@id, @url);
    
    exec sp_OACreate'MSXML2.XMLHTTP',@object out
    exec sp_OAMethod @object,'open',null,'get',@url,'false'
    exec sp_OAMethod @object,'send'
    exec sp_OAMethod @object,'responseText',@responseText output
 
    print @responseText
 
    exec sp_OADestroy @object
 
    SET NOCOUNT ON;
END
GO

EXEC sp_addextendedproperty
'MS_Description', N'称重信息表插入后触发器',
'SCHEMA', N'dbo',
'TABLE', N'称重信息',
'TRIGGER', N'kingdee'

看着复杂其实一点也不复杂,因为这个数据库的表是中文(不是我建的表系统中的中文的我没办法改),大致就是获取插入的数据然后进行触发,请求,然后API执行插入另一个数据库。
然后执行插入语句就可以看到执行的结果了~

相关实践学习
使用SQL语句管理索引
本次实验主要介绍如何在RDS-SQLServer数据库中,使用SQL语句管理索引。
SQL Server on Linux入门教程
SQL Server数据库一直只提供Windows下的版本。2016年微软宣布推出可运行在Linux系统下的SQL Server数据库,该版本目前还是早期预览版本。本课程主要介绍SQLServer On Linux的基本知识。 相关的阿里云产品:云数据库RDS SQL Server版 RDS SQL Server不仅拥有高可用架构和任意时间点的数据恢复功能,强力支撑各种企业应用,同时也包含了微软的License费用,减少额外支出。 了解产品详情: https://www.aliyun.com/product/rds/sqlserver
目录
相关文章
|
5月前
|
DataWorks 大数据 API
DataWorks RunTriggerNode接口是只能调度 http触发器节点吗?
DataWorks RunTriggerNode接口是只能调度 http触发器节点吗?
167 1
|
5月前
|
SQL Oracle 关系型数据库
数据库sqlserver-----触发器的插入,更新和删除
数据库sqlserver-----触发器的插入,更新和删除
288 3
|
5月前
|
存储 SQL
SQL Server 存储过程 触发器 事务处理
SQL Server 存储过程 触发器 事务处理
|
存储 SQL 安全
数据库SQL Server 9-10 章(存储过程与触发器)
数据库SQL Server 9-10 章(存储过程与触发器)
193 0
|
SQL 存储 监控
sqlserver触发器详解:sqlserver触发器after/for和instead of的区别详解(实例讲解),触发器定义创建操作打通,触发器的优缺点,触发器使用建议
sqlserver触发器详解:sqlserver触发器after/for和instead of的区别详解(实例讲解),触发器定义创建操作打通,触发器的优缺点,触发器使用建议
1998 1
|
存储 SQL 数据库
sqlserver触发器的使用以及inserted和deleted详解
sqlserver触发器的使用以及inserted和deleted详解
575 0
|
SQL 存储 安全
SQL Server——触发器
触发器,是一种特殊类型的存储过程,它在指定的表中的数据发生变化时自动生效。经常通过触发器来强制实现不同表中的逻辑相关数据的引用完整性或一致性。触发器主要是通过事件进行触发而被执行的,而存储过程可以通过过程名字而直接调用。当对某一个表进行诸如UPDATE、INSERT、DELETE这些操作时,SQL Server就会自动执行触发器所定义的SQL语句,从而确保对数据的处理必须符合这些SQL语句所定义的规则
|
SQL 存储 开发框架
SqlServer触发器的创建与使用
SqlServer触发器的创建与使用
|
4月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(2)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
|
4月前
|
存储 SQL 关系型数据库
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】(1)
MySQL 进阶使用【函数、索引、视图、存储过程、存储函数、触发器】
下一篇
无影云桌面