gpt4 book ai didi

delphi - DBExpress:如何查找主键字段?

转载 作者:行者123 更新时间:2023-12-02 00:10:21 25 4
gpt4 key购买 nike

我有一个基于动态创建的 SQL 查询的 TSimpleDataSet。我需要知道哪个字段是主键?

SimpleDataSet1.DataSet.SetSchemaInfo(stIndexes, 'myTable' ,'');

此代码告诉我,我有一个名为“someName”的主键,但我如何知道哪个字段(列)适用于该索引?

最佳答案

主键/索引可以属于多个列(而不仅仅是一个列)。

架构 stIndexes 数据集将返回 PK 名称 INDEX_NAME 以及构建该 PK/索引的列 (COLUMN_NAME)。 INDEX_TYPE 将告诉您拥有哪些索引类型 (eSQLNonUnique/eSQLUnique/eSQLPrimaryKey)。

我从未使用过TSimpleDataSet,但检查索引信息是否存储在 IndexDefs[TIndexDef].Name/Fields/Options - 如果 Options 中有 ixPrimary 那么这就是您的 PK。并且 Fields 属于该索引。

查看SqlExpr.pas处的源代码:TCustomSQLDataSet.AddIndexDefs。请注意 TCustomSQLDataSet 如何从命令文本返回 TableName(然后是索引信息):

  ...
if FCommandType = ctTable then
TableName := FCommandText
else
TableName := GetTableNameFromSQL(CommandText);
DataSet := FSQLConnection.OpenSchemaTable(stIndexes, TableName, '', '', '');
...

关于delphi - DBExpress:如何查找主键字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455503/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com