From e7d51d8c077740fd93e596f3e44fee483b2cad30 Mon Sep 17 00:00:00 2001 From: Alessandro Bonazzi Date: Tue, 21 Dec 2021 00:13:04 +0100 Subject: [PATCH] Patch level : nopatch Files correlati : Commento : Implementazione FP --- src/fp/fplib01.cpp | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/src/fp/fplib01.cpp b/src/fp/fplib01.cpp index 8fc269a21..56d17bb05 100644 --- a/src/fp/fplib01.cpp +++ b/src/fp/fplib01.cpp @@ -596,16 +596,40 @@ bool TPaf_record::update() TPaf_record::TPaf_record(const char* table) : _table(table), _key(15, ',') { TString q; - q << "SELECT col.[name] FROM sys.columns AS col \ + TString constraint(table); + + constraint.rtrim(1); + constraint << 'Q'; +// q << "SELECT col.[name] FROM sys.columns AS col \ +// inner JOIN sys.index_columns AS idx on col.[object_id] = idx.[object_id] AND col.[column_id] = idx.[column_id] \ +// inner join sys.indexes as K on idx.[index_id] = K.[index_id] \ +// where K.[name] = '" << table << "_KEY' \ +// AND idx.[object_id] = object_id('" << table << "') \ +// ORDER BY index_column_id ASC"; + q << "SELECT col.[name] FROM sys.columns AS col \ inner JOIN sys.index_columns AS idx on col.[object_id] = idx.[object_id] AND col.[column_id] = idx.[column_id] \ inner join sys.indexes as K on idx.[index_id] = K.[index_id] \ - where K.[name] = '" << table << "_KEY' \ + where K.[name] = '" << constraint << "' \ AND idx.[object_id] = object_id('" << table << "') \ ORDER BY index_column_id ASC"; + for (bool ok = fp_db().sq_set_exec(q); ok; ok = fp_db().sq_next()) { _key.add(fp_db().sq_get("name")); } + if (_key.empty_items()) + { + q = "SELECT col.[name] FROM sys.columns AS col "; + q << "inner JOIN sys.index_columns AS idx on col.[object_id] = idx.[object_id] AND col.[column_id] = idx.[column_id] \ + inner join sys.indexes as K on idx.[index_id] = K.[index_id] \ + where K.[name] = '" << table << "_KEY' \ + AND idx.[object_id] = object_id('" << table << "') \ + ORDER BY index_column_id ASC"; + for (bool ok = fp_db().sq_set_exec(q); ok; ok = fp_db().sq_next()) + { + _key.add(fp_db().sq_get("name")); + } + } CHECKS(!_key.empty_items(), "Invalid primary key for table ", table); } ////////////////////////////////////////////////////////