Changeset 3324

Show
Ignore:
Timestamp:
08/23/2007 05:38:18 AM (1 year ago)
Author:
ed
Message:

Changed the SQL used to get the PK of a table to the code suggested by Uwe Grauer.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/dabo/db/dbFirebird.py

    r3323 r3324  
    117117    def getFields(self, tableName, cursor): 
    118118        # Get the PK 
    119         sql = """ select inseg.rdb$field_name 
    120         from rdb$indices idxs join rdb$index_segments inseg 
    121             on idxs.rdb$index_name = inseg.rdb$index_name 
    122             where idxs.rdb$relation_name = '%s' 
    123     and idxs.rdb$unique_flag = 1 """ % tableName.upper() 
     119### The SQL for the PK changed by Uwe Grauer 2007.08.23 
     120#       sql = """ select inseg.rdb$field_name 
     121#       from rdb$indices idxs join rdb$index_segments inseg 
     122#           on idxs.rdb$index_name = inseg.rdb$index_name 
     123#           where idxs.rdb$relation_name = '%s' 
     124#   and idxs.rdb$unique_flag = 1 """ % tableName.upper() 
     125        sql = """ SELECT S.RDB$FIELD_NAME AS COLUMN_NAME 
     126        FROM RDB$RELATION_CONSTRAINTS RC 
     127            LEFT JOIN RDB$INDICES I ON (I.RDB$INDEX_NAME = RC.RDB$INDEX_NAME) 
     128            LEFT JOIN RDB$INDEX_SEGMENTS S ON (S.RDB$INDEX_NAME = I.RDB$INDEX_NAME) 
     129        WHERE (RC.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY') 
     130        AND (I.RDB$RELATION_NAME = '%s') """ % tableName.upper() 
    124131        cursor.execute(sql) 
    125132        rs = cursor.getDataSet(rows=1)