【发布时间】:2018-06-20 02:07:27
【问题描述】:
假设我有一个 accounts 表,并且在该表中我有一个 profile_id 列。我希望能够在具有相同profile_id 的列中拥有多行,但我也想能够说“如果没有其他行具有此profile_id 值,则插入”。通常,我会为此使用唯一约束,但是当我期望 profile_id 存在时,我无法覆盖它。
如果值已经存在,有没有办法(没有竞争条件)出现插入错误或失败,或者让插入忽略约束并输入与约束不匹配的值?
【问题讨论】:
-
请提供示例数据以阐明您想要做什么。
-
假设架构有一个
num列。我希望能够将 1 插入该 num 列,然后尝试再次插入 1,但它失败了。就像一个独特的约束。但是我也,在查询级别,希望能够说“我希望 1 已经存在,并且无论如何都想插入另一个 1”,基本上覆盖了唯一约束。我不知道什么样的样本数据能说明这一点。 -
您不能插入到列中。您可以将 row 插入到 table 中。听起来您有两个数据用例:(1)插入具有重复值的新行应该失败,(2)插入具有重复值的新行应该成功。我做对了吗?您希望系统如何区分这两种情况?你会传递旗帜或其他东西吗?
-
没错,有时我希望插入的行成功,有时我希望它失败,这取决于我正在运行的查询。我希望有一种方法可以修改插入语句以使其成功或失败,否则它不会。
标签: sql postgresql