【问题标题】:Error message with all constraint violations in postgrespostgres 中所有违反约束的错误消息
【发布时间】:2014-05-23 17:55:15
【问题描述】:

我正在使用 node 的 pg 客户端构建一个 node 应用程序,因为它是一个简单的应用程序,所以我不使用应用程序验证,只使用 postgres 约束来保护数据完整性并显示插入和更新错误。

使用 pg 客户端我一次只能得到一个约束违规,即使发生了多次违规。

是否可以将 postgres 设置为在插入错误时发出所有违反约束的行为?

【问题讨论】:

    标签: node.js postgresql


    【解决方案1】:

    是否可以将 postgres 设置为在插入错误时发出所有违反约束的行为?

    不使用 PostgreSQL,不,因为第一次违规会引发错误,从而中止事务。

    让 PostgreSQL 发出所有违规行为将涉及对核心 PostgreSQL 引擎进行重大手术。

    在应用内验证以提供用户友好的错误消息和指导;使用数据库约束和验证来强制数据完整性。

    【讨论】:

    • 谢谢,我通常会进行应用内验证,但我正在尝试使用一个非常简单的应用来查看是否可以偷工减料,一些 ORM(例如 Ruby 的续集)会根据以下内容进行表检查以“自动验证”约束。
    • 但是插入可能引用多个外键约束(强制数据完整性),并且首先在应用程序中检查这些约束(使用查询)是双重工作。
    • @malthe 是的。一个有用的选项是在外键约束中使用命名约束,例如CONSTRAINT blah FOREIGN KEY ... 。然后在从服务器收到错误时匹配约束名称。您可以在服务器返回的错误结构的详细字段中获取违反的约束名称 - 您不需要解析错误消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-07
    • 1970-01-01
    • 2018-07-02
    • 2014-08-12
    • 2012-03-03
    • 1970-01-01
    相关资源
    最近更新 更多