• sqlServer触发器调用JavaWeb接口


    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
    

    2、测试表

    我们要实现的效果就是:当users表里插入一条数据后,触发器通过,发送http请求,请求java web接口,然后会往one表里插入一条数据。

    • users表
    字段 类型
    id int
    name varchar
    CREATE TABLE [dbo].[users] (
      [id] int  NOT NULL,
      [name] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
      CONSTRAINT [PK__users__3213E83F7F60ED59] PRIMARY KEY CLUSTERED ([id])
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
    ON [PRIMARY]
    )  
    ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[users] SET (LOCK_ESCALATION = TABLE)
    GO
    
    • one表
    字段 类型
    id int
    name varchar
    CREATE TABLE [dbo].[one] (
      [id] int  NOT NULL,
      [name] varchar(255) COLLATE Chinese_PRC_CI_AS  NULL,
      CONSTRAINT [PK__one__3213E83F03317E3D] PRIMARY KEY CLUSTERED ([id])
    WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)  
    ON [PRIMARY]
    )  
    ON [PRIMARY]
    GO
    
    ALTER TABLE [dbo].[one] SET (LOCK_ESCALATION = TABLE)
    

    3、触发器

    触发器是建立在操作表上的,也就是users表上。

    CREATE TRIGGER [dbo].[tr_users]
    ON [dbo].[users]
    WITH EXECUTE AS CALLER
    FOR INSERT
    AS
    BEGIN
      -- Type the SQL Here.
    	DECLARE @id int;
    	declare @url varchar(4000);
    	declare @object int;
    	declare @responseText varchar(4000);
    	
    	SELECT @id = (select id from inserted);
    	SELECT @url = 'http://192.168.31.133:8080/send/' + CONVERT(VARCHAR, @id);
    	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'users表插入后触发器',
    'SCHEMA', N'dbo',
    'TABLE', N'users',
    'TRIGGER', N'tr_users'
    

    4、web接口

    • pom.xml

    • application.properties

    • web接口

    5、结果

    users表中插入 (123,'123')数据:

    通过web接口,one表中已经插入了(123,'name123')数据:

    接口调用日志:

  • 相关阅读:
    SpringBoot表单验证
    新创建的maven项目,显示的jdk版本与使用的不一致
    maven常用的构建命令
    maven 配置说明
    springmvc 初始化参数绑定(使用属性编辑器) 来处理类型转换问题
    【LOJ#10180】烽火传递 单调队列+dp
    【洛谷P1854】花店橱窗 线性dp+路径输出
    【CF1076D】Edge Deletion 最短路+贪心
    【洛谷P5020】货币系统 完全背包
    【洛谷P5018】对称二叉树
  • 原文地址:https://www.cnblogs.com/zhaoxxnbsp/p/13570873.html
Copyright © 2020-2023  润新知