Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa noite!
Estou a algum tempo tentando resolver um problema que estou tentando ao tentar excluir registros com o PDO e não consigo solucioná-lo.
Tenho 3 tabelas
produto - dados do produto
cor - dados da cor
corproduto - vínculo da tabela produto e cor
Acontece que, quando vou alterar um produto, em minhas classes, eu excluo todos os registros referente ao produto em questão da tabela corproduto. E vinculo as novas cores do produto. A tabela corproduto tem chave única (1produto:1cor). Porém, quando executo o programa, ele me acusa que estou restringindo a chave única.
SQLSTATE[23505]: Unique violation: 7 ERROR: duplicate key value violates unique constraint "corproduto_cor_produto_in"
DETAIL: Key (id_cor, id_produto)=(1, 19) already exists.
Comentei o trecho do código onde eu salvo as novas cores e tentei salvar, o produto. Dessa forma ele exclui o vínculo normalmente e salva os dados do produto sem nenhum problema.
Segue abaixo o meu código e tabela:
/**
* Exclui os dados da tabela de acordo com a cláusula where fornecida.
* @param string $sClausulaWhere
* @throws Exception
* @return boolean
*/
public function excluir($sClausulaWhere = null) {
if (empty($sClausulaWhere)) {
throw new Exception("Nenhuma cláusula WHERE foi informada.");
}
$oBanco = Banco::getInstance(); $sSqlDelete = "delete from {$this->getNomeTabela()} where {$sClausulaWhere};";
$rsDelete = $oBanco->exec($sSqlDelete);
} catch (PDOException $ePDOException) {
throw new Exception($ePDOException->getMessage());
}
return true;
}
felinisoftware=# \d corproduto
Table "public.corproduto"
Column | Type | Modifiers
------------+---------+-----------
id_cor | integer | not null
id_produto | integer | not null
Indexes:
"corproduto_cor_produto_in" UNIQUE, btree (id_cor, id_produto)
Foreign-key constraints:
"corproduto_id_cor_fkey" FOREIGN KEY (id_cor) REFERENCES cor(id_cor)
"corproduto_id_produto_fkey" FOREIGN KEY (id_produto) REFERENCES produto(id_produto)
Toda ajuda é bem vinda.
Obrigado.
Carregando comentários...