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')數據:

接口調用日志:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM