你的这个想法是不能实现的触发器仅在数据发生变化时才触发,这个变化指用修改了触发器所在对象的数据,所以必须对视图进行insert/update/delete才会触发器源表数据的变化不会触发器,因为视图是在查询时取数的,它本身不保存数据,所以源表数据的变化只是在视图查询时才反应给视图,这个根本不会触发触发器,也就实现不了你的要求.
解决方案 »
- 用BCP 命令导出数据到EXCEL 文件,发现身份证号或日期的格式问题?
- 请问查询时如果order by的字段中存在null值时的排序情况
- 求一条sql语句!请高手指点
- 表已删除, 可syscolumns里还能找到此表的字段
- SqlServer和Interbase在外连接表时的更新操作问题,期望有高手在!
- 请问一下这三行代码应该如何改才可以运行
- 去一个表所有字段名称的SQL,怎么写
- sql多表查询问题!在线等!送分
- 大问题!!!!!
- 我想这样,我该怎么办?
- 关于临时表的问题,征求答案
- 在连接数据库之前调用sp_password @new='123','sa'来强行修改登陆密码,这样应该怎样实现?用VB或哪个API可以吗?谢谢!
OPENROWSET('SQLOLEDB',
'DRIVER={SQL Server};SERVER=192.168.1.172;UID=id;PWD=id',
cerp_app.dbo.SAL_InterPackList) a我如何才能建立这个表的触发器比如我的目标表是本地的mem.dbo.xxx
查询分析器连接到远程服务器来创建触发器
create TRIGGER SAL_InterPackList_iud ON [dbo].SAL_InterPackList
for insert ,delete ,update
AS
declare @expr1 varchar(200)
set @expr1 = 'OPENROWSET('SQLOLEDB',
'DRIVER={SQL Server};SERVER=10.1.1.2;UID=id;PWD=id',
mem.dbo.xxx)'
select Account_code,Account_name into #i from inserted
select Account_code,Account_name into #d from deleted
exec('delete from'+ @expr1+' where exists(select * from #d where Account_code='+ @expr1+'.cCusCode)')
exec('insert into '+@expr1+' (cCusCode,cCusName) select * from #i')
go
for insert ,delete ,update
AS
declare @expr1 varchar(200)
set @expr1 = 'OPENROWSET(''SQLOLEDB['',
''[DRIVER={SQL Server};SERVER=10.1.1.2;UID=id;PWD=id'',
mem.dbo.xxx)'
select Account_code,Account_name into #i from inserted
select Account_code,Account_name into #d from deleted
exec('delete a from '+ @expr1+' a where exists(select * from #d where Account_code=a.cCusCode)')
exec('insert into '+@expr1+' (cCusCode,cCusName) select * from #i')
go