使用Delphi,我需要创建一个类,其中包含特定的表结构(不带数据),包括所有字段、约束、外键和索引。目标是拥有“标准”表,比较它们并找出差异。这个功能应该被包含在我的大型项目中,所以我不能使用任何“外部”的比较器。此外,这个功能可能会被扩展,所以我需要自己实现。问题是如何检索这些信息,只有连接字符串和特定的表名。使用 SQL Server 2008。
如果您查看Delphi源代码,它是这样完成的:
选择*从表中,其中1=2
更新:
可以使用信息模式视图检索元数据,例如约束:
SELECT * FROM databaseName.INFORMATION_SCHEMA.CONSTRAINT_COLUMN_USAGE
Where TABLE_NAME='tableName'
where
条件会浪费很多IO周期,因为它需要在SQL解析和执行期间评估条件。例如,一个Firebird服务器对于负的where
条件耗费执行时间= 110ms
。在执行期间使用select first 0 * from table
,其耗费的执行时间= 0ms
。 - Chau Chee Yang距离我上次接触Delphi已经很久了,但我仍然记得一些我曾经做过的事情。比如
select top 0 * from table
返回 0 条记录,但 TQuery 中填充了元数据。或者我认为在 TClientDataSet 上可以将行设置为 -1,具有相同的效果。
正如我所说,很长时间以来我都没有在 Delphi 中玩过,而且我使用的是 BDE 而不是本地客户端,所以这些信息可能都是无用的。
希望这能有点帮助。