【发布时间】:2014-05-23 17:55:15
【问题描述】:
我正在使用 node 的 pg 客户端构建一个 node 应用程序,因为它是一个简单的应用程序,所以我不使用应用程序验证,只使用 postgres 约束来保护数据完整性并显示插入和更新错误。
使用 pg 客户端我一次只能得到一个约束违规,即使发生了多次违规。
是否可以将 postgres 设置为在插入错误时发出所有违反约束的行为?
【问题讨论】:
标签: node.js postgresql
我正在使用 node 的 pg 客户端构建一个 node 应用程序,因为它是一个简单的应用程序,所以我不使用应用程序验证,只使用 postgres 约束来保护数据完整性并显示插入和更新错误。
使用 pg 客户端我一次只能得到一个约束违规,即使发生了多次违规。
是否可以将 postgres 设置为在插入错误时发出所有违反约束的行为?
【问题讨论】:
标签: node.js postgresql
是否可以将 postgres 设置为在插入错误时发出所有违反约束的行为?
不使用 PostgreSQL,不,因为第一次违规会引发错误,从而中止事务。
让 PostgreSQL 发出所有违规行为将涉及对核心 PostgreSQL 引擎进行重大手术。
在应用内验证以提供用户友好的错误消息和指导;使用数据库约束和验证来强制数据完整性。
【讨论】:
CONSTRAINT blah FOREIGN KEY ... 。然后在从服务器收到错误时匹配约束名称。您可以在服务器返回的错误结构的详细字段中获取违反的约束名称 - 您不需要解析错误消息。