一个让人感到困惑的问题,数据库里的数据表的数据出现不一致的情况.(建议高手看看!) 那你汇总数据是如何生成的????请说清楚是不是你处理过程有bug??? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 用事务处理:begin tran insert 表1 ... insert 表2 ...commit tran例:create table Table1 (a int)gobegin tran insert table1 values(1) ----这句是对的 insert table1 values('aaa') ----这句由于类型不一样将报错commit transelect * from table1 ------结果是两句都没插入 你是先插明细记录还是先插汇总记录?不论顺序先后,应该都放在一个事务里,没有错误提交,有问题回滚操作。begin traninsert 明晰表 values(....)if @@error<>0 goto H_Errinsert 明晰表 values(....)if @@error<>0 goto H_Errinsert 汇总表 values(....)if @@error<>0 goto H_Errcommit tranreturnH_Err:rollback tran 哦,是商业POS吧,应该是你的设计有点问题吧。说的能具体些吗?两个表有什么关系,前后顺序等等,清楚了才能知道怎么回答。 关于两个表中都有一个单据号字段是由另一个数据表djh动态产生,而且数据表djh上加了一个锁。 SaleLine 销售单表 列名 类型 长度 空 默认值 自增 说明 v cSaleLine varchar 19 否 单号 cChainCode varchar 4 否 外码: wareinfo - cwarecode cCounterCode varchar 4 柜组编码 cEmpCode varchar 6 员工编码 cOp_Code varchar 10 操作员 cMacno varchar 2 收银机号 mCostAmt money 8 成本金额 mSaleDueAmt money 8 标准价应结 mSaleTaxAmt money 8 mSalePayAmt money 8 交易价应收 cCardCode varchar 20 店内卡卡号 cGuestName varchar 50 持店内卡人名 cAccountNo varchar 20 bStoreBlc bit 1 传送标志 fG_Count float 8 数量 bSendAcc bit 1 传送标志 dsaledate datetime 8 销售时间 mSalecash money 8 现金 mSalecard money 8 信用卡 mSaleCheck money 8 支票 mSaleother money 8 其它 CLINETYPE varchar 4 单类型 fg_discount money 8 折扣金额 bcheck bit 1 (0) 审核标记-------------------------------------------------------------------------------------------------SaleList 销售单明细表 列名 类型 长度 空 默认值 自增 说明 v cSaleLine varchar 19 否 单号;外码: SaleLine - cSaleLinev iListNo int 4 否 是 序号 cG_barcode varchar 13 否 商品条码;外码: GPinfo - cG_BarCode fg_Count float 8 数量 mg_uprice smallmoney 4 交易价 mG_bprice smallmoney 4 标准价 fg_discount float 8 折扣 mg_ucost money 8 进价 cSaleType varchar 2 销售类型 tag_upload bit 1 传送标志 cg_name varchar 30 商品名称 cSp_Code varchar 6 供应商 mbuy_hj money 8 销售金额 mcost_hj money 8 进价金额 mbuyold_hj money 8 fg_mlje money 8 毛利金额 dg_tag varchar 1 促销方式-------------------------------------------------------------------------------------------------Maxvouch 取最大单号表 列名 类型 长度 空 默认值 自增 说明 v id int 4 否 是 编号 cBilltype varchar 20 否 单据类型 cBillTag char 2 否 单据前缀标示 iBillvalue int 4 否 单据变量 ddate datetime 8 否 取单号最新日期 如何在Where语句中实现Case when? 一百本10万字的书,sql怎么存储和检索。两个关键词查找的问题 哪个数据库支持集合包含运算(完全子集合判断操作符)contains操作(问题见下) 如何实现这个递增的UPDATE? 如何在局域网内,对别的机子实现远程安装sql server系统? 急!急!急!大家帮帮忙!!! 在存储过程中如何使用不同数据库的数据表? 很菜的问题 怎样修改记录(在线等) 采用三层模式,用存储过程好,还是直接用SQL组装好? 从A表获取范围,从B表中获取规定的数据,求教SQL语句 请问'前滚事务'和'回滚事务'有什么区别?!
insert 表1 ...
insert 表2 ...
commit tran
例:create table Table1 (a int)
go
begin tran
insert table1 values(1) ----这句是对的
insert table1 values('aaa') ----这句由于类型不一样将报错
commit transelect * from table1 ------结果是两句都没插入
不论顺序先后,应该都放在一个事务里,没有错误提交,有问题回滚操作。
begin tran
insert 明晰表 values(....)
if @@error<>0 goto H_Err
insert 明晰表 values(....)
if @@error<>0 goto H_Err
insert 汇总表 values(....)
if @@error<>0 goto H_Err
commit tran
return
H_Err:
rollback tran
说的能具体些吗?两个表有什么关系,前后顺序等等,清楚了才能知道怎么回答。
SaleLine 销售单表
列名 类型 长度 空 默认值 自增 说明
v cSaleLine varchar 19 否 单号
cChainCode varchar 4 否 外码: wareinfo - cwarecode
cCounterCode varchar 4 柜组编码
cEmpCode varchar 6 员工编码
cOp_Code varchar 10 操作员
cMacno varchar 2 收银机号
mCostAmt money 8 成本金额
mSaleDueAmt money 8 标准价应结
mSaleTaxAmt money 8
mSalePayAmt money 8 交易价应收
cCardCode varchar 20 店内卡卡号
cGuestName varchar 50 持店内卡人名
cAccountNo varchar 20
bStoreBlc bit 1 传送标志
fG_Count float 8 数量
bSendAcc bit 1 传送标志
dsaledate datetime 8 销售时间
mSalecash money 8 现金
mSalecard money 8 信用卡
mSaleCheck money 8 支票
mSaleother money 8 其它
CLINETYPE varchar 4 单类型
fg_discount money 8 折扣金额
bcheck bit 1 (0) 审核标记
-------------------------------------------------------------------------------------------------
SaleList 销售单明细表
列名 类型 长度 空 默认值 自增 说明
v cSaleLine varchar 19 否 单号;外码: SaleLine - cSaleLine
v iListNo int 4 否 是 序号
cG_barcode varchar 13 否 商品条码;外码: GPinfo - cG_BarCode
fg_Count float 8 数量
mg_uprice smallmoney 4 交易价
mG_bprice smallmoney 4 标准价
fg_discount float 8 折扣
mg_ucost money 8 进价
cSaleType varchar 2 销售类型
tag_upload bit 1 传送标志
cg_name varchar 30 商品名称
cSp_Code varchar 6 供应商
mbuy_hj money 8 销售金额
mcost_hj money 8 进价金额
mbuyold_hj money 8
fg_mlje money 8 毛利金额
dg_tag varchar 1 促销方式-------------------------------------------------------------------------------------------------Maxvouch 取最大单号表
列名 类型 长度 空 默认值 自增 说明
v id int 4 否 是 编号
cBilltype varchar 20 否 单据类型
cBillTag char 2 否 单据前缀标示
iBillvalue int 4 否 单据变量
ddate datetime 8 否 取单号最新日期