Primary Key

5 respostas
alessandro.moreira

Preciso obter os campos “Primary key (PK)” do todas as tabelas de um database no firebird.
alguém poderia me fornecer essa solução ??

Grato a todos…

5 Respostas

Gabriel

select * from all_constraints where constraint_type like ‘P’?

No Oracle faço assim :stuck_out_tongue:

fredferrao

tenta assim

select C.RDB$CONSTRAINT_NAME AS NOME, C.RDB$RELATION_NAME AS TABELA,
C.RDB$CONSTRAINT_TYPE AS TIPO from rdb$relation_constraints C
where C.RDB$CONSTRAINT_TYPE = 'PRIMARY KEY'
alessandro.moreira

Pessoal, consegui caminhar mas ainda encontro problemas.

public void getMaxPK() throws SQLException {

Connection connection = new JDBCConnection().getConnection();

DatabaseMetaData dbmd = connection.getMetaData();

ResultSet rs = dbmd.getPrimaryKeys(null, null, null);

while(rs.next()){

String tabela = rs.getString(TABLE_NAME);

String pk = rs.getString(PK_NAME);
Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(
                "SELECT MAX(" + pk + ") FROM " + tabela + ";");
       
        @SuppressWarnings("unused")
        int valor = 0;
       
        while(resultSet.next()){
            valor = resultSet.getInt(1);
        }
       
        System.out.println("Nome da Tabela:\t\t\t" + tabela +
                            "\nNome do Campo-PK:\t\t" + pk +
                            "\nÚltimo Valor do Campo-PK:\t" + pk + "\n\n");
    }
}

O código em negrito me retorna o valor da campo constraint da Primary Key e não o valor do campo que contem o mone da chave primária da tabela.

Bem se alguem conseguir dar continuidade, só falta resolver como pegar o nome da coluna da chave primária que bata com o valor desse constraint.

alessandro.moreira

fredferrao,

RDB$CONSTRAINT_NAME retorna o o pk mas o valor constraint e preciso dos valores da Pk das tabelas e não da de sistemas.

fredferrao

O que exatamente vc esta tentando fazer???

Criado 19 de maio de 2006
Ultima resposta 22 de mai. de 2006
Respostas 5
Participantes 3