找回密码
 立即注册

QQ登录

只需一步,快速开始

ECHO1998
高级会员   /  发表于:2021-4-15 11:34:14
10#
这个问题有解决的方法吗?
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-4-15 16:30:11
11#
本帖最后由 Joe.xu 于 2021-4-15 16:38 编辑
ECHO1998 发表于 2021-4-15 11:34
这个问题有解决的方法吗?

您好,这个我们本地也复现了,具体的原因可能要咨询一下开发那边,
这两天就会给您反馈,您再耐心等下

有一点想再问下,您为什么要写这两个触发进一步修改数据呢,需求场景是什么呢
回复 使用道具 举报
小侠米
论坛元老   /  发表于:2021-4-16 14:51:28
13#
Joe.xu 发表于 2021-4-15 16:30
您好,这个我们本地也复现了,具体的原因可能要咨询一下开发那边,
这两天就会给您反馈,您再耐心等下{: ...

触发器自动修改一些内容应该是很正常的数据库操作,跟场景都没有什么关系吧
  1. SET ANSI_NULLS ON
  2. GO
  3. SET QUOTED_IDENTIFIER ON
  4. GO
  5. CREATE TRIGGER [dbo].[zb]
  6. ON [dbo].[子表]
  7. AFTER INSERT
  8. AS
  9. BEGIN
  10. SET NOCOUNT Off;

  11. UPDATE a SET a.[整数2] = a.整数2 *10
  12. FROM 子表 a,[Inserted] b
  13. WHERE a.[ID]=b.[ID]
  14. UPDATE a SET a.[整数1] = a.整数1 *10
  15. FROM 主表 a,[Inserted] b
  16. WHERE a.[ID]=b.[主表ID]
  17. SET NOCOUNT ON;
  18. END
复制代码
上面方法是:只在子表上用一个触发器同时更新主表和子表,这个是临时可以的满足群主的需求

但是,反过来,在主表上用一个触发器同时更新主表和子表,这个是会报错的;包括帖子这里的主表、子表各自有触发器都报错
以上只是简单的测试
所以感觉这个应该是一个BUG,而且算比较严重,毕竟是跟MS数据库的逻辑直接冲突,这个问题大家一看也知道是不合理的,希望能完善一下。


点评

我感觉这个说的有道理  发表于 2021-4-16 19:04
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-4-16 17:09:46
14#
小侠米 发表于 2021-4-16 14:51
触发器自动修改一些内容应该是很正常的数据库操作,跟场景都没有什么关系吧
上面方法是:只在子表上用一 ...

这个如果是直接使用数据表手动添加先添加主表数据,再自己添加子表数据是没问题,
但楼主使用的是主子表逻辑的添加,这个逻辑中添加了主表之后,我们需要回调新添加的数据拿到这个主表的ID,再把这个ID放在这子表中,这个逻辑是封装好的一套。
如果在主表使用了触发器,会干扰回调的时候拿刚才添加的主表信息,因为触发器会对一些数据作修改,导致了这个问题。
不知道这样说,您能不能明白
回复 使用道具 举报
小侠米
论坛元老   /  发表于:2021-4-17 08:11:51
15#
这么说能明白,但是有问题这个是摆在这里的
为了实现自己的逻辑把别人的逻辑给**了,这样不好滴
这个问题交个大家去自己判断吧,我就此打住哈
回复 使用道具 举报
Timothy.Xu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-4-19 09:04:49
16#
感谢支持~
回复 使用道具 举报
12
您需要登录后才可以回帖 登录 | 立即注册
返回顶部