Foxtable(狐表)用户栏目专家坐堂 → sql server 外部数据源自增主键保存的问题


  共有3488人关注过本帖树形打印复制链接

主题:sql server 外部数据源自增主键保存的问题

帅哥哟,离线,有人找我吗?
vimin
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
sql server 外部数据源自增主键保存的问题  发帖心情 Post By:2019/12/17 21:34:00 [只看该作者]

一个窗口中2个表,sqltable,一个支出表,一个支出明细表。明细表的主键是自增主键。
开启了事务处理,用sql的语句insert来保存两个表,现在碰到问题。
明细表新增的行,在窗口中主键都是从0开始编号的,用sql的语句直接insert,就会和后台的原来数据冲突。(使用了set identity_insert on/off语句)
但如果不是用sql语句insert的方式来保存,直接用datatable.save()就不存在这个问题。
请问这应该怎么解决?datatable.save()的保存方式是怎么解决这个问题的呢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/17 21:55:00 [只看该作者]

用sql的语句直接insert的时候不要包含自增主键值即可。不需要使用什么set identity_insert on/off语句

比如可以:Insert Into 订单 (编号,产品) Values(BH100,'PD01')

但是不可以:Insert Into 订单 (自增主键, 编号,产品) Values(1,BH100,'PD01')

 回到顶部
帅哥哟,离线,有人找我吗?
vimin
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/12/18 8:22:00 [只看该作者]

非常感谢!
这个办法我想过,但我是用函数写的,函数中是历遍各个字段。有的表是自增主键,有的表不是自增主键。
所以我在调用函数前,如果是自增主键的表,我会插入set identity_insert on。
如果不用这种思路,怎么在函数中判断是否是自增主键,是自增主键这个字段就不insert呢?
还请老师麻烦看一下

 回到顶部
帅哥哟,离线,有人找我吗?
有点蓝
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:110648 积分:563148 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/12/18 8:34:00 [只看该作者]

如果是自己设计的表,最简单的方法就是使用系统默认的主键名称“_Identify”,或者统一一个列名称,如:id。

不然还得从数据库连接查询一次:https://zhidao.baidu.com/question/1431688173610957459.html

 回到顶部
帅哥哟,离线,有人找我吗?
vimin
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:158 积分:1542 威望:0 精华:0 注册:2018/4/11 21:01:00
  发帖心情 Post By:2019/12/18 8:36:00 [只看该作者]

好的,明白了,非常感谢!

 回到顶部