''Create Index NameIndex On MyComm(ID,Name)'' );
execSql;
end;
二. 删 除 表 索 引
(1) 用Table.DeleteIndex 来 实 现
DeleteIndex 只 能 删 除 次 索 引 名 称.
方 法:DeleteIndex( IndexName )
其 中:( 详 见Delphi 帮 助)
IndexName: 次 索 引 名 称.
下 面 是 一 个 例 子:
假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录
d:\mynote 下, 现 有 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex), 将 删 除 之.
with table1 do
begin
close;
Exclusive := true;
DatabaseName := ''d:\MyNote'';
TableName := ''MyComm.DB'';
Open;
{删除次索引}
DeleteIndex(''NameIndex'');
close;
end;
(2) 用SQL 来 实 现
在SQL 语 法 中, 用 来 删 除 索 引 的 语 句 是:
Drop Index TableName.IndexName
要 删 除 次 索 引 时,IndexName 为 一 个 次 索 引 的 名 称, 如''MyTable.MySecIndex1'' 等.
要 删 除 主 索 引 时,IndexName 为''primary'', 如''MyTable.primary''; 值 得 注 意 的 是, 在 删 除 主 索 引 成 功 后, 数 据 表 的 所 有 次 索 引 也 自 动 删 除.
下 面 是 一 个 例 子:
假 设 有 一 个 存 放 通 讯 录 数 据 表MyComm.DB( 类 型 为Paradox) 存 放 于 本 地 目 录
d:\mynote 下, 已 定 义 一 个 主 索 引( 索 引 域 为 编 号ID) 和 一 个 次 索 引( 索 引 域 为 编 号ID 和 姓 名Name, 索 引 名 称 为NameIndex).
现 在 因 为 索 引 损 坏, 要 删 除 索 引, 以 便 重 新 索 引.
with query1 do
begin
close;
DatabaseName := ''d:\MyNote'';
{删除次索引NameIndex }
sql.clear;
sql.add( ''Drop Index MyComm.NameIndex'' );
execSql;
{删除主索引 }
sql.clear;
sql.add( ''Drop Index MyComm.Primary'' );
execSql;
end;
三. 注 意 事 项:
(1) 在 索 引 更 改 时, 应 保 证 对 应 的 数 据 表 可 以 以 独 占 方 式(Exclusive=true) 打 开, 否 则 会 引 起 错 误.
(2) 上 述 方 法 略 加 修 改 后, 也 可 用 于dBase,Oracle 等 其 它 数 据 库 的 数 据 表.
(3) 如 果 需 要 重 新 对 索 引 文 件 进 行 索 引, 请 参 考BDE 的Dbi 函 数 说 明:
RegenIndex, RegenIndexes.
(4) 以 上 程 序 在Delphi3.0 下 测 试 通 过。