나는 dinamically 만든 SQL 쿼리를 기반으로 TSimpleDataSet 있습니다. 어떤 필드가 기본 키인지 알아야합니까?DBExpress : 기본 키 필드를 찾는 방법은 무엇입니까?
SimpleDataSet1.DataSet.SetSchemaInfo(stIndexes, 'myTable' ,'');
이 코드는 'someName'이라는 이름의 기본 키를 가지고 있지만이 인덱스에서 작동하는 필드 (열)를 어떻게 알 수 있습니까?
나는 dinamically 만든 SQL 쿼리를 기반으로 TSimpleDataSet 있습니다. 어떤 필드가 기본 키인지 알아야합니까?DBExpress : 기본 키 필드를 찾는 방법은 무엇입니까?
SimpleDataSet1.DataSet.SetSchemaInfo(stIndexes, 'myTable' ,'');
이 코드는 'someName'이라는 이름의 기본 키를 가지고 있지만이 인덱스에서 작동하는 필드 (열)를 어떻게 알 수 있습니까?
기본 키/색인은 여러 열 (하나가 아닌)에 속할 수 있습니다.
스키마 stIndexes
데이터 세트는 PK 이름 INDEX_NAME
과 해당 PK/색인 (COLUMN_NAME
)을 구성하는 열을 반환합니다. INDEX_TYPE
은 보유하고있는 색인 유형 (eSQLNonUnique/eSQLUnique/eSQLPrimaryKey
)을 알려줍니다.
TSimpleDataSet
와 함께 일한하지만 인덱스 정보가
IndexDefs[TIndexDef].Name/Fields/Options
에 저장되어 있는지 확인 적이 -
ixPrimary
Options
에서 다음이 당신의 PK 경우. 해당 색인에
Fields
이 속해 있습니다.
SqlExpr.pas
: TCustomSQLDataSet.AddIndexDefs
의 출처를 확인하십시오.
...
if FCommandType = ctTable then
TableName := FCommandText
else
TableName := GetTableNameFromSQL(CommandText);
DataSet := FSQLConnection.OpenSchemaTable(stIndexes, TableName, '', '', '');
...
나는 간단한 데이터 세트가 그 정보를 제공하지 않는다고 생각한다.
그러나 그 구성 요소가 있다고 확신합니다. Oracle 데이터베이스의 경우 Devart's ODAC을 확인하십시오. 기본적으로 데이터베이스에는 하나의 쿼리 만 포함됩니다. 그러나 구성 요소가 기본적으로 제공하는 것이 아니라 다른 쿼리가 포함되어 응답 시간이 느려집니다.
Oracle 데이터베이스의 경우 user_indexes
에 대한 쿼리
'선택 * 표에서 표 2 storedprocedure3 가입 someview5 ....'에 가입하고 주 어떤 분야가 될 것 조인 : 명령 텍스트에서
TCustomSQLDataSet
반환TableName
(다음 indexs 정보) 방법 주? –내 쿼리는 단일 테이블 – TheHorse
으로만 작동하지만 라이브러리는이 기능을 제공 할 것이고 어떤 쿼리와도 작동해야합니다. –