以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  sql语句没有保存,有什么可能性?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=191877)

--  作者:lur320
--  发布时间:2024/5/13 10:16:00
--  sql语句没有保存,有什么可能性?
下面3个语句,第一条没有在sql sever内保存,有什么可能性?
这几个语句是通过SQL server profiler 记录的,最近员工反映有时候数据没有保存,所以我逐条查询SQL的记录情况。

1xec sp_executesql N\'2PDATE [生产进度] SET [生产日期] = @P1, [产品名称] = @P2, [产品批号] = @P3, [规格] = @P4, [批量] = @P5, [制粒时间1] = @P6, [制粒清场1] = @P7, [制粒时间2] = @P8, [制粒清场2] = @P9, [制粒存储期] = @P10, [制粒] = @P11, [制粒班次] = @P12, [制粒生产] = @P13, [制粒清场] = @P14, [paixu] = @P15, [车间] = @P16 WHERE (([_Identify] = @P17))\',N\'@P1 datetime,@P2 nvarchar(9),@P3 nvarchar(9),@P4 nvarchar(5),@P5 nvarchar(5),@P6 datetime,@P7 datetime,@P8 datetime,@P9 datetime,@P10 nvarchar(19),@P11 nvarchar(2),@P12 nvarchar(2),@P13 real,@P14 real,@P15 nvarchar(9),@P16 nvarchar(3),@P17 int\',\'2024-05-11 00:00:00\',N\'苯磺酸左氨氯地平片\',N\'240511605\',N\'2.5mg\',N\'120万片\',\'2024-05-11 08:25:00\',\'2024-05-11 11:21:00\',\'2024-05-11 11:20:00\',\'2024-05-11 11:31:00\',N\'2024-06-10 11:20:00\',N\'曹凯\',N\'单班\',2.9200000762939453,0.17000000178813934,N\'240511605\',N\'3车间\',1705 -------  时间:2024-05-12 09:33:12.850

这条是更新identify 第1705列。批次240511605。后面就查不到这个批次,并且identify1705列为就没有了,也不是NULL,就是没有了。并且后面我并没有查到再次update这个1705 identify 列的sql 语句。


1xec sp_executesql N\'1NSERT INTO [生产进度] ([生产日期], [产品名称], [产品批号], [规格], [批量], [预处理时间1], [预处理清场1], [制粒时间1], [制粒清场1], [压片充填1], [压片充填清场1], [包衣1], [包衣清场1], [内包1], [内包清场1], [外包1], [外包清场2], [备注], [_Locked], [预处理时间2], [预处理清场2], [制粒时间2], [制粒清场2], [压片充填2], [压片充填清场2], [包衣2], [包衣清场2], [内包2], [内包清场2], [外包2], [外包清场1], [包合1], [包合2], [包合清场1], .。。。。。[外包清场], [paixu], [车间]) VALUES (@P1, @。。。。。(1),@P56 nvarchar(1),@P57 nvarchar(1),@P58 nvarchar(1),@P59 nvarchar(1),@P60 nvarchar(1),@P61 nvarchar(2),@P62 nvarchar(1),@P63 real,@P64 real,@P65 real,@P66 real,@P67 real,@P68 real,@P69 real,@P70 real,@P71 real,@P72 real,@P73 real,@P74 real,@P75 real,@P76 real,@P77 real,@P78 real,@P79 nvarchar(9),@P80 nvarchar(3)\',\'2024-05-11 00:00:00\',N\'苯磺酸左氨氯地平片\',N\'240511607\',N\'2.5mg\',N\'120万片\',NULL,NULL,\'2024-05-11 14:26:00\',\'2024-05-11 16:35:00\',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,0,NULL,NULL,\'2024-05-11 16:34:00\',\'2024-05-11 16:45:00\',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,N\'2024-06-10 16:34:00\',NULL,NULL,NULL,NULL,NULL,NULL,N\'曹凯\',NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,N\'单班\',NULL,NULL,NULL,2.130000114440918,0.17000000178813934,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,N\'240511607\',N\'3车间\' -------------时间:2024-05-12 09:33:12.853

这个是新增了一列,批次为240511607,后面查询到这个批次被insert 到了 identify 1707列。


De1ete Fr0m [生产进度] where 产品批号 is null   -------2024-05-12 09:33:39.620

--  作者:lur320
--  发布时间:2024/5/13 10:19:00
--  
 会不会是网络卡滞?但是1707列新增的反而是有的。更新的1705 和1706列就不见了。

--  作者:lur320
--  发布时间:2024/5/13 10:33:00
--  
 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建 microsoft excel 工作表.xlsx

附件是下载的清单,后面到今天上午,这个表格就没有再次update 1705列的语句。为啥1705列会消失?求助大神

--  作者:lur320
--  发布时间:2024/5/13 10:36:00
--  

到今天为止 和1705列相关的,就这一句sql语句。

--  作者:lur320
--  发布时间:2024/5/13 10:36:00
--  

图片点击可在新窗口打开查看此主题相关图片如下:捕获.png
图片点击可在新窗口打开查看
 
--  作者:有点蓝
--  发布时间:2024/5/13 10:56:00
--  
所有执行过的sql肯定都会被保留的。

另外profiler 只是记录执行了什么sql,但是sql的执行未必是成功的。例如在Update的时候identify 1705的数据在之前可能就已经被删除了,所以这个update执行了,但是执行了个寂寞,没有什么用

--  作者:lur320
--  发布时间:2024/5/13 11:01:00
--  
 这条操作我问了产线,他是通过新增行,然后填写了4个批次。

也可能是前两个批次是填错了,又修改了。。

然后按了save。

save的按钮是通过datatable的save命令来保存表格。

为啥后面2个批次是sql insert成功了,而前面2个丢失批次是update 1705列?都是新增的红色行。



--  作者:lur320
--  发布时间:2024/5/13 11:07:00
--  
 大概的意思是:

1,新增很多的红行,
2,填写2个批次,但发现批号错了。改为240511605 和240511606
3,继续填写后面的批次,如240511607和240511608
4,一共是4行,都是红行,保存,发现240511605和240511606消失。

因为他如果删除了删除了行,是不可能再编辑1705行的。我问了,都是新增,不是说加载了数据,1705被在其他电脑上删掉的。
[此贴子已经被作者于2024/5/13 11:09:15编辑过]

--  作者:有点蓝
--  发布时间:2024/5/13 11:26:00
--  
怎么做保存的?1楼有删除的代码【De1ete Fr0m [生产进度] where 产品批号 is null   -------2024-05-12 09:33:39.620】,另外既然有update,说明是保存了多次的,因为如果只保存一次肯定全部都是insert,而不会有update

下面的操作可能会导致出问题

1、新增4行
2、编辑第3、4行,填入批次,然后保存,4行数据都保存了。不过在保存之后又有其它代码删除批次为空的行,因为第1、2行没有批次会被删除掉,但是注意,如果使用的sql删除的,只是删除了后台数据,客户端界面如果没有重新加载,这第1、2行仍然是存在的
3、编辑第1、2行【改为240511605 和240511606
4、编辑其它数据,然后保存

另外还有一种情况可能会有问题,就是【identify1705】这个1705是怎么来的,如果是新增行,_identify值是不对的,保存后才能获取正确的值。

个人的建议是永远不要使用自增列来做业务处理,因为是不可控的。应该使用类似自编号这种能够唯一识别某一行的数据进行关联更新处理数据

--  作者:lur320
--  发布时间:2024/5/13 11:38:00
--  
 我刚测试了,在红行修改多次,也是insert。。

必须是原先存在的行是update。。

De1ete Fr0m [生产进度] where 产品批号 is null 是菜单按钮,不是保存,保存就是整个表save。不过菜单和保存按钮都没有重新加载数据,仅变化了加载树的内容。

我考虑修改整个代码不使用新增行,每次新增了先保存。然后菜单删除数据后,清空表格。