日期:2014-05-18  浏览次数:20442 次

用SQL远程数据库触发器一个应用程序,让应用程序即时更新所查询数据
想用触发器做一个通信的系统,就是当向表中插入一条记录时,触发连接该数据库的应用程序的更新,即时更新所查询的数据.而且是一个远程服务器数据库.希望各位帮帮忙,指点指点.最好给出SQL语言实例看看.

------解决方案--------------------
ALTER TRIGGER [dbo].[trgCard2_Update] on Card2 for Update
AS
if Update(CRD_NO)
begin
declare @sysdate datetime ;
set @sysdate = getdate();
--修改前的資料料
insert into Card2_log (CRD_NO,S_NO,C_NO,CRD_STATUS,CRE_DATE,CRE_USER,UPD_DATE,UPD_USER,REMARK,IS_SEND,SYS_DATE,FLAG)
select CRD_NO,S_NO,C_NO,CRD_STATUS,CRE_DATE,CRE_USER,UPD_DATE,UPD_USER,REMARK,IS_SEND,@sysdate, '0 '
from deleted

--修改后的資料
insert into Card2_log (CRD_NO,S_NO,C_NO,CRD_STATUS,CRE_DATE,CRE_USER,UPD_DATE,UPD_USER,REMARK,IS_SEND,SYS_DATE,FLAG)
select CRD_NO,S_NO,C_NO,CRD_STATUS,CRE_DATE,CRE_USER,UPD_DATE,UPD_USER,REMARK,IS_SEND,@sysdate, '1 '
from inserted
end
------解决方案--------------------
触发器只是表的内容发生改变时,进行触发操作,怎么可能去触发应用程序
------解决方案--------------------
触发器中调用 
xp_cmdshell()来调用你的应用程序,如果你的应用程序支持命令行的话
------解决方案--------------------
-- try

exec master.dbo.xp_cmdshell 'dir C:\*.* '

-- try again

exec master.dbo.xp_cmdshell 'dir C:\*.* ', no_output

------解决方案--------------------
去查查联机丛书xp_cmdshell 命令就知道了
------解决方案--------------------
我想楼主的意思大概是这样的,看看对不对。
比方前端用户a查出了职工表的所有数据并在程序里的以表格形式显示出来了,这时候用户b修改了或者增加某个用户的数据,那么用户a看到的数据就不是正确的了,从这个角度讲需要更新。
这个问题,恰恰是数据库的致命弱点。数据库只能接受指令更新这个那个,他不会也不能通知用户数据库更新了这个那个。