sql server触发器作用于mysql表

touxiansinuo018956 2016-04-29 02:50:28
sql server中一张表的变化带动mysql中相应的另外一张表变化,
有什么机制可以使sql server 和mysql 建立连接,使得sql server中表的触发器能触发mysql中的表?
...全文
345 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
misterliwei 2016-04-30
  • 打赏
  • 举报
回复
实际上,根据连接的描述,像这样跨数据库的分布式事务根本没有什么好的方法的。
misterliwei 2016-04-30
  • 打赏
  • 举报
回复
做了几个实验,又看了一些文章。最后得出的结论是:不可以。 正常的查询,和不涉及到跨数据库的事务是没有问题的。 即使启动了MSDTC,但是mysql odbc驱动不支持MSDTC。 http://bbs.csdn.net/topics/340113443
Ginnnnnnnn 2016-04-30
  • 打赏
  • 举报
回复
引用 4 楼 touxiansinuo018956 的回复:
[quote=引用 1 楼 KanzakiOrange 的回复:] 通过链接服务器可以访问到mysql,但我不确定你在触发器中能这样做,可能一执行就死 ,而且只能说这样做起来极度不稳定。说挂就挂 这种牵扯到异构数据库的,最好是程序去2个数据库写2次。
程序去2个数据库写2次怎么理解呢?我不是太明白[/quote] 程序写2次就是单独写一次Sql Server 和写一次MySql ,不要2个数据库混在一起搞,不然到时出错怎么死的都不知道
misterliwei 2016-04-30
  • 打赏
  • 举报
回复
引用 13 楼 touxiansinuo018956 的回复:
[quote=引用 12 楼 misterliwei 的回复:] [quote=引用 10 楼 touxiansinuo018956 的回复:] [quote=引用 9 楼 misterliwei 的回复:] 写操作必然会涉及到事务的,而且因为在mssql 的触发器中写,会涉及到跨数据库 事务。 可能是要设置msdtc的。
我用链接服务器成功连接了两个数据库,可以查询到异地数据库,但是当我给mssql的表 建立了触发器,插入数据到表的时候,会显示触发对应的对象名无效,不能插入;是否意味着链接服务器不支持触发器? 设置msdtc能够解决跨数据库的触发器事务吗?具体设置msdtc怎么做呢?谢谢[/quote] 不一定在触发器中。只要在SQL SERVER同一个事务中,分别对两个数据库表的数据插入,试试[/quote] 我想做的是mssql的表中的数据实时同步到mysql中,业务是只对mssql的表更新插入数据,mysql的表不主动去操作,所以想用触发器,两个数据库在不同的服务器上,想通过addlinkserver来实现两个数据库的连接,分别对两个数据库插入数据可能不合适,链接服务器中用触发器以你的经验来看是否可行呢?[/quote] 因为触发器和触发事件 是在同一个事务中。
touxiansinuo018956 2016-04-30
  • 打赏
  • 举报
回复
引用 12 楼 misterliwei 的回复:
[quote=引用 10 楼 touxiansinuo018956 的回复:] [quote=引用 9 楼 misterliwei 的回复:] 写操作必然会涉及到事务的,而且因为在mssql 的触发器中写,会涉及到跨数据库 事务。 可能是要设置msdtc的。
我用链接服务器成功连接了两个数据库,可以查询到异地数据库,但是当我给mssql的表 建立了触发器,插入数据到表的时候,会显示触发对应的对象名无效,不能插入;是否意味着链接服务器不支持触发器? 设置msdtc能够解决跨数据库的触发器事务吗?具体设置msdtc怎么做呢?谢谢[/quote] 不一定在触发器中。只要在SQL SERVER同一个事务中,分别对两个数据库表的数据插入,试试[/quote] 我想做的是mssql的表中的数据实时同步到mysql中,业务是只对mssql的表更新插入数据,mysql的表不主动去操作,所以想用触发器,两个数据库在不同的服务器上,想通过addlinkserver来实现两个数据库的连接,分别对两个数据库插入数据可能不合适,链接服务器中用触发器以你的经验来看是否可行呢?
misterliwei 2016-04-30
  • 打赏
  • 举报
回复
引用 10 楼 touxiansinuo018956 的回复:
[quote=引用 9 楼 misterliwei 的回复:] 写操作必然会涉及到事务的,而且因为在mssql 的触发器中写,会涉及到跨数据库 事务。 可能是要设置msdtc的。
我用链接服务器成功连接了两个数据库,可以查询到异地数据库,但是当我给mssql的表 建立了触发器,插入数据到表的时候,会显示触发对应的对象名无效,不能插入;是否意味着链接服务器不支持触发器? 设置msdtc能够解决跨数据库的触发器事务吗?具体设置msdtc怎么做呢?谢谢[/quote] 不一定在触发器中。只要在SQL SERVER同一个事务中,分别对两个数据库表的数据插入,试试
touxiansinuo018956 2016-04-30
  • 打赏
  • 举报
回复
引用 8 楼 KanzakiOrange 的回复:
[quote=引用 7 楼 misterliwei 的回复:] [quote=引用 1 楼 KanzakiOrange 的回复:] 通过链接服务器可以访问到mysql,但我不确定你在触发器中能这样做,可能一执行就死 ,而且只能说这样做起来极度不稳定。说挂就挂 这种牵扯到异构数据库的,最好是程序去2个数据库写2次。
用链接服务器应该是可以做到的。[/quote]用链接服务器做读和写都可以,但是一定不能包含在事务里面,一包含就抛错,而且这个是应用在触发器里面,触发器本身已经是带有事务了,所以结果有可能是一每次插入数据都会抛错[/quote] 如果采用发布订阅的方式可以订阅到mssql,oracle和db2;但是订阅上没有明文支持mysql,有什么方式可以使mysql订阅mssql的数据库吗?链接服务器关于触发器的我遇到的问题在#10,也麻烦你有时间帮忙看一下,谢谢。
touxiansinuo018956 2016-04-30
  • 打赏
  • 举报
回复
引用 9 楼 misterliwei 的回复:
写操作必然会涉及到事务的,而且因为在mssql 的触发器中写,会涉及到跨数据库 事务。 可能是要设置msdtc的。
我用链接服务器成功连接了两个数据库,可以查询到异地数据库,但是当我给mssql的表 建立了触发器,插入数据到表的时候,会显示触发对应的对象名无效,不能插入;是否意味着链接服务器不支持触发器? 设置msdtc能够解决跨数据库的触发器事务吗?具体设置msdtc怎么做呢?谢谢
misterliwei 2016-04-30
  • 打赏
  • 举报
回复
写操作必然会涉及到事务的,而且因为在mssql 的触发器中写,会涉及到跨数据库 事务。 可能是要设置msdtc的。
Ginnnnnnnn 2016-04-30
  • 打赏
  • 举报
回复
引用 7 楼 misterliwei 的回复:
[quote=引用 1 楼 KanzakiOrange 的回复:] 通过链接服务器可以访问到mysql,但我不确定你在触发器中能这样做,可能一执行就死 ,而且只能说这样做起来极度不稳定。说挂就挂 这种牵扯到异构数据库的,最好是程序去2个数据库写2次。
用链接服务器应该是可以做到的。[/quote]用链接服务器做读和写都可以,但是一定不能包含在事务里面,一包含就抛错,而且这个是应用在触发器里面,触发器本身已经是带有事务了,所以结果有可能是一每次插入数据都会抛错
misterliwei 2016-04-30
  • 打赏
  • 举报
回复
引用 1 楼 KanzakiOrange 的回复:
通过链接服务器可以访问到mysql,但我不确定你在触发器中能这样做,可能一执行就死 ,而且只能说这样做起来极度不稳定。说挂就挂 这种牵扯到异构数据库的,最好是程序去2个数据库写2次。
用链接服务器应该是可以做到的。
shoppo0505 2016-04-29
  • 打赏
  • 举报
回复
引用 3 楼 touxiansinuo018956 的回复:
[quote=引用 2 楼 shoppo0505 的回复:] 没想法. 一般来说都是主动要求读取数据.你主要要求发送数据没做过.
从Mysql主动读取sql server中表的数据该怎么实现?大体的思路可以麻烦你写一下吗[/quote] 用SQL Agent执行SSIS包
touxiansinuo018956 2016-04-29
  • 打赏
  • 举报
回复
引用 2 楼 shoppo0505 的回复:
没想法. 一般来说都是主动要求读取数据.你主要要求发送数据没做过.
从Mysql主动读取sql server中表的数据该怎么实现?大体的思路可以麻烦你写一下吗
touxiansinuo018956 2016-04-29
  • 打赏
  • 举报
回复
引用 1 楼 KanzakiOrange 的回复:
通过链接服务器可以访问到mysql,但我不确定你在触发器中能这样做,可能一执行就死 ,而且只能说这样做起来极度不稳定。说挂就挂 这种牵扯到异构数据库的,最好是程序去2个数据库写2次。
程序去2个数据库写2次怎么理解呢?我不是太明白
shoppo0505 2016-04-29
  • 打赏
  • 举报
回复
没想法. 一般来说都是主动要求读取数据.你主要要求发送数据没做过.
Ginnnnnnnn 2016-04-29
  • 打赏
  • 举报
回复
通过链接服务器可以访问到mysql,但我不确定你在触发器中能这样做,可能一执行就死 ,而且只能说这样做起来极度不稳定。说挂就挂 这种牵扯到异构数据库的,最好是程序去2个数据库写2次。

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧