我正在用foreach循环插入多个表,我需要唯一键列名,因为它在运行时违反了唯一键约束,所以我可以修改值并插入它。
foreach ($data as $table_name){
$sql="INSERT INTO $table_name ($column_name) VALUES ($column_vlues)"
$result=query_params($db_conn,$sql,$params)
if($result){
//Do nothing. Its fine
}else{
//If its voileting the unique key contraints then change the column value like new column value = $column_name_which_voileting.$value and then insert it.
}
}
任何帮助都将受到感谢。
1条答案
按热度按时间v9tzhpje1#
你可以用
pg_get_result_error()
为了得到PGSQL_DIAG_MESSAGE_PRIMARY
,它将包含如下约束名称:从中可以提取约束的名称。然后您可以查询
information_schema.constraint_column_usage
若要查找与该约束关联的列(如果约束跨越多个列,则可能必须求助于pg_catalog.pg_constraint
找到它们的相对位置)。postgresql实际上将普通约束名与错误消息一起发送,但是php无法提取错误响应字段。