gente, preciso obter o valor que é retornado na consulta que sempre irá retornar 1 único registro.
até aí blz, porém quando tento inserir no banco ele dá erro pois ele está tentando inserir desse jeito…
Qual erro? Qual o log que é lhe exibido e que mensagem é retornada?
Por qual motivo a inserção com o seu código no valor 2 não deveria ser possível?
Outra coisa, você está recuperando o psi_codigo_sup da tabela, setando exatamente esse mesmo valor no seu $prt->psi_codigo_sup e depois salvando.
Se seu código for PK, então está certo seu banco não deixar você salvar se o erro for um erro de constraint violation.
E mais importante, diga qual problema você quer resolver, porque o ideal de um código de tabelas em bancos de dados que são apenas um index numérico sequencial, é que eles sejam controlados pelo próprio database via sequences ou auto increments.