找回密码
 立即注册

QQ登录

只需一步,快速开始

ECHO1998

高级会员

86

主题

251

帖子

1079

积分

高级会员

积分
1079
ECHO1998
高级会员   /  发表于:2021-4-8 22:25  /   查看:5499  /  回复:15
1金币
本帖最后由 ECHO1998 于 2021-4-8 22:51 编辑

我用的sqlserver数据库,有一对主子表,主子表都有触发器,触发器都经过INSERT语句验证,
USE [测试]
GO
declare @str int;
INSERT INTO [dbo].[主表] ([整数1]) VALUES(9)
set   @str =  SCOPE_IDENTITY()
print  @str
INSERT INTO [dbo].[子表]([主表ID],[整数2])VALUES( @str,8)
GO
没有错误,但是一运行活字格页面,当添加的时候就报有两个以上记录的错误。


附件: 您需要 登录 才可以下载或查看,没有帐号?立即注册

最佳答案

查看完整内容

您好,这个原因我们内部调查了一下,当用我们内部的逻辑执行插入的时候,我们会先执行插入操作,然后再执行获取插入行id的sql去获取id。加了触发器之后 当执行插入操作的时候,会执行sqlserver的trigger 这样会导致我们后续取id的sql不能正常执行,获取不到正确的id. 所以建议您们必须要触发器的话,就需要自己写添加的逻辑,不能直接使用主子表的添加更新逻辑,下面这个帖子也是触发器导致的,原因是一样的,您可以 ...

16 个回复

倒序浏览
最佳答案
最佳答案
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-4-8 22:25:28
来自 12#
Joe.xu 发表于 2021-4-15 16:30
您好,这个我们本地也复现了,具体的原因可能要咨询一下开发那边,
这两天就会给您反馈,您再耐心等下{: ...

您好,这个原因我们内部调查了一下,当用我们内部的逻辑执行插入的时候,我们会先执行插入操作,然后再执行获取插入行id的sql去获取id。加了触发器之后
当执行插入操作的时候,会执行sqlserver的trigger
这样会导致我们后续取id的sql不能正常执行,获取不到正确的id.
所以建议您们必须要触发器的话,就需要自己写添加的逻辑,不能直接使用主子表的添加更新逻辑,下面这个帖子也是触发器导致的,原因是一样的,您可以参考下
外联数据库添加触发器,newrowid获取失败
https://gcdn.grapecity.com.cn/fo ... 2&fromuid=60953
(出处: 葡萄城产品技术社区)
回复 使用道具 举报
ECHO1998
高级会员   /  发表于:2021-4-8 22:30:24
2#
错误截图

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
ECHO1998
高级会员   /  发表于:2021-4-9 09:38:14
3#
这个问题没有解决方案吗?只有分开保存主表和明细表吗?
回复 使用道具 举报
Chelsey.Wang讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-4-9 09:58:25
4#
您好,这个问题出现的原因一般是由于外链表没有主键,或者主表有多个主键,您可以参考这两个帖子中给出的解决方案:

主子表添加数据时“更新数据库失败!有超过2个以上的字段存在”
https://gcdn.grapecity.com.cn/fo ... 2&fromuid=62376
(出处: 葡萄城产品技术社区)


有超过2个以上的记录存在
https://gcdn.grapecity.com.cn/fo ... 8&fromuid=62376
(出处: 葡萄城产品技术社区)


回复 使用道具 举报
ECHO1998
高级会员   /  发表于:2021-4-9 10:09:54
5#
我的主子表都已经设置了主见并且唯一怎么也出现这个问题?
回复 使用道具 举报
ECHO1998
高级会员   /  发表于:2021-4-9 10:15:25
6#
我的问题是设置了主表触发器引起的,可是这个触发器在用sql语句添加时又没有错误
在活字格里面分开保存主表和子表也没有问题。都能保存并且触发器也正常运行,一旦在活字格添加页面设置了主子表关系,应该是保存主表,子表自动保存,这个时候就引起错误
回复 使用道具 举报
Tracy.Liu讲师达人认证 悬赏达人认证 活字格认证
论坛元老   /  发表于:2021-4-9 15:35:49
7#
ECHO1998 发表于 2021-4-9 10:15
我的问题是设置了主表触发器引起的,可是这个触发器在用sql语句添加时又没有错误
在活字格里面分开保存主 ...

听起来像是触发器导致什么冲突了。
您可以备份一下您整个库,里面会带有触发器这些。如果有敏感数据,可以脱敏操作,随工程文件一并上传,并提供一下如何点击可以复现您的问题,这边帮您看一下哦。
回复 使用道具 举报
ECHO1998
高级会员   /  发表于:2021-4-9 17:18:08
8#
我上传的工程文件已经有数据库,并含有数据,只要把内联库转为SQLSERVER外联库,页面上有触发器原代码,拷贝原代码到新查询,执行就可以,操作就是点击添加就会出现错误,如果你没有SQLSERVER服务器,我再想办法,我这服务器无法连接外网,物料隔离了
回复 使用道具 举报
Joe.xu讲师达人认证 悬赏达人认证 活字格认证
超级版主   /  发表于:2021-4-9 18:26:49
9#
ECHO1998 发表于 2021-4-9 17:18
我上传的工程文件已经有数据库,并含有数据,只要把内联库转为SQLSERVER外联库,页面上有触发器原代码,拷 ...

好的,这边我们先在本地调查一下,后面给您反馈
回复 使用道具 举报
12下一页
您需要登录后才可以回帖 登录 | 立即注册
返回顶部