以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- sql server 外部数据源自增主键保存的问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=144359) |
-- 作者:vimin -- 发布时间:2019/12/17 21:34:00 -- sql server 外部数据源自增主键保存的问题 一个窗口中2个表,sqltable,一个支出表,一个支出明细表。明细表的主键是自增主键。 开启了事务处理,用sql的语句insert来保存两个表,现在碰到问题。 明细表新增的行,在窗口中主键都是从0开始编号的,用sql的语句直接insert,就会和后台的原来数据冲突。(使用了set identity_insert on/off语句) 但如果不是用sql语句insert的方式来保存,直接用datatable.save()就不存在这个问题。 请问这应该怎么解决?datatable.save()的保存方式是怎么解决这个问题的呢?
|
-- 作者:有点蓝 -- 发布时间: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 -- 发布时间:2019/12/18 8:22:00 -- 非常感谢! 这个办法我想过,但我是用函数写的,函数中是历遍各个字段。有的表是自增主键,有的表不是自增主键。 所以我在调用函数前,如果是自增主键的表,我会插入set identity_insert on。 如果不用这种思路,怎么在函数中判断是否是自增主键,是自增主键这个字段就不insert呢? 还请老师麻烦看一下
|
-- 作者:有点蓝 -- 发布时间:2019/12/18 8:34:00 -- 如果是自己设计的表,最简单的方法就是使用系统默认的主键名称“_Identify”,或者统一一个列名称,如:id。 不然还得从数据库连接查询一次:https://zhidao.baidu.com/question/1431688173610957459.html
|
-- 作者:vimin -- 发布时间:2019/12/18 8:36:00 -- 好的,明白了,非常感谢! |