|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
但我们知道,若使用statement,并没有上述需要的数据。试想binlog中记录了一句updatetsetf1=3whereid=3。怎么恢复呢?erp
一:BOM睁开(按任一父结点睁开到最底层)
以下写一个复杂的,视详细请求稍做修正便可。
createtable表(levelidint,levelnamechar(2),parentint)
insert表select1,AA,0
unionallselect2,BB,1
unionallselect3,CC,1
unionallselect4,DD,2
unionallselect5,EE,3
unionallselect6,FF,5
createfunctionbom(@namechar(2))
returns@tbtable(levelidint,levelnamechar(2),parentint)
as
begin
insert@tbselectlevelID,LevelName,parentfrom表whereLevelname=@name
while@@rowcount>0
insert@tbselectlevelID,LevelName,parentfrom表
whereparentin(selectlevelIDfrom@tb)
andlevelIDnotin(selectlevelIDfrom@tb)
return
end
select*fromdbo.bom(bb)
levelidlevelnameparent
-------------------------------
2BB1
4DD2
(所影响的行数为2行)
二:LLC(最低层码)
1:物料主文件中最少有这两个字段
itemNo,llc
2:BOM中最少有这两个字段(树状)
parentItem,itemNo
3:
CreateProcedureLLC
As
Update物料主文件setllc=0--先将LLC全体清为0
Declare@itinyint
Set@i=0
While@i<=10--假定BOM最多只要10层
Begin
UpdateaSeta.llc=@i+1--子结点的LLC加1
From物料主文件a
Joinbombona.itemNo=b.itemNo
Join物料主文件conc.itemNo=b.parentItem
wherec.llc=@i
Set@i=@i+1
End
/***********Usage:ExecLLC*******/
这能找出所有错误的99.99%。它不能找出的是仅仅涉及数据文件的损坏(这很不常见)。如果你想要检查一张表,你通常应该没有选项地运行myisamchk或用-s或--silent选项的任何一个。 |
|