PHP Postgres约束违规 - 我能以某种方式得到约束名称吗?

时间:2010-04-21 09:39:53

标签: php postgresql error-handling constraints

我们有一个Web应用程序在工作时与Postgres SQL数据库交谈 - 我在服务器上设置了许多约束以保持数据的一致性但是我们在报告很好的情况下会阻止用户输入他的数据(无效) )在给定时刻的数据。

我们唯一可以获得的是“约束违规”,但这不是非常具有描述性,从perl或直接从PGAdmin我们得到关于哪个约束导致失败(约束的名称)的好信息 - 有没有办法在PHP中做同样的事情?

我们能够升级PHP或使用不同的数据库访问模块,如果它有帮助,那么我有兴趣知道是否可以使用你可以安全推荐的任何方式。

2 个答案:

答案 0 :(得分:2)

您最好使用pg_result_error_field,此功能可为您提供有关错误的更多详细信息。如果你使用存储过程并让它们抛出包括DETAIL's and HINT's在内的异常,那么代码中的错误处理将非常简单。

答案 1 :(得分:0)

使用pg_last_error

$c = pg_connect('service=example');
$q = 'INSERT INTO example VALUES ($1, $2)';

$s = pg_query_params($c, $q, array('XXX',2.2222));
echo pg_last_error($c);

我明白了:

ERROR:  duplicate key value violates unique constraint "example_example_key"

"example_example_key"是相关约束的名称。