如何用sql做物理删除???(50分)

  • 主题发起人 主题发起人 舞雪
  • 开始时间 开始时间

舞雪

Unregistered / Unconfirmed
GUEST, unregistred user!
sql能不能进行记录的物理删除啊???
会不会比用table还麻烦???
 
当然可以。
差不多吧
 
你所说的物理删除是直接用SQL删除表中资料吗?若是这样,应该还好些.
'delete from yourtable where youfield=??'
 
DBMS类型的数据库,只要执行了delete from 指令,相应的数据就没有
了,而且是不可恢复的。与dbf文件概念不同,它不存在物理删除的概念。

 
你的物理删除是什么意思?delete后,再commit?
 
不是,我用的量dbf库,如果只用delete的话,不能真正的删除!
也就是说是可以在foxbase/foxpro里面仅仅只做了删除标记,可以用recall恢复的!!
我想是不是可以用复制记录来实现!
也就是说用sql删除了之后,再把表中的记录全部复制到一个临时库文件里,再删除
以前的表,最后把临时文件改名!有哪位大哥可以帮忙实现一下!!谢谢!!
不过,最好还是用sql了!!

 
commit有什么用啊?怎么用?
 
舞雪,不好意思,你用DBF,我前面答了你一个问题,我以为你用SQLServer的。。

有小问题找QQ:7603844吧

 
使用DbiPackTable()函数对table进行pack,要注意表要是已打开且以独占方式打开。
 
我没有用table,我用的是query!
不想再加一个table!!
 
使用DbiPackTable()函数
 
注意:delete后要用commit!
 
临时生成一个Table不就得了,还不定要那么麻烦吗?
 
用DbiPackTable()函数对应你要删除的表名。你用Table干什么呢?
 
sql 里没有物理删除的概念
 
物理删除?这和SQL没有关系
主要看你用的是什么数据库了
一般说来只要在对库操作后加一句:commit(提交)就OK了
不用管那么多的东东...
 
我用的是dbf数据库,可以用commit吗?
commit怎么用呀?找不到相关资料!
 
procedure PackTable(Table: TTable);
var
Props: CURProps;
hDb: hDBIDb;
TableDesc: CRTblDesc;
begin
try
if not Table.Exclusive then Table.Exclusive:=true;
// raise EDatabaseError.Create('Table must be opened exclusively to pack');
// Make sure the table is open exclusively so we can get the db handle...
if not Table.Active then Table.OPEN;
// raise EDatabaseError.Create('Table must be opened to pack');


// Get the table properties to determine table type...
Check(DbiGetCursorProps(Table.Handle, Props));

// If the table is a Paradox table, you must call DbiDoRestructure...
if Props.szTableType = szPARADOX then begin
// Blank out the structure...
FillChar(TableDesc, sizeof(TableDesc), 0);
// Get the database handle from the table's cursor handle...

Check(DbiGetObjFromObj(hDBIObj(Table.Handle), objDATABASE, hDBIObj(hDb)));
// Put the table name in the table descriptor...
StrPCopy(TableDesc.szTblName, Table.TableName);
// Put the table type in the table descriptor...
StrPCopy(TableDesc.szTblType, Props.szTableType);
// Set the Pack option in the table descriptor to TRUE...
TableDesc.bPack := True;
// Close the table so the restructure can complete...
Table.Close;
// Call DbiDoRestructure...

Check(DbiDoRestructure(hDb, 1, @TableDesc, nil, nil, nil, False));
end
else
// If the table is a dBASE table, simply call DbiPackTable...
if (Props.szTableType = szDBASE) then
Check(DbiPackTable(Table.DBHandle, Table.Handle, nil, szDBASE, True))
else
// Pack only works on PAradox or dBASE; nothing else...
raise EDatabaseError.Create('Table must be either of Paradox or dBASE ' +

'type to pack');
finally
Table.close;
end;
 
rxlib 的 bdeutils 就有相应的东东。
 
多人接受答案了。
 
后退
顶部