【问题标题】:In SQLite3, is there a way to not allow a duplicate field when another field is the same value?在 SQLite3 中,当另一个字段的值相同时,有没有办法不允许重复字段?
【发布时间】:2021-02-06 23:43:31
【问题描述】:

这很难解释,这可能就是我找不到答案的原因。例如,我有一张“食谱”、“配料”表。成分显然会被重复用于不同的配方,所以我不能使用 UNIQUE,但我希望该命令拒绝任何尝试将成分插入到该配方中已经存在的特定配方的数据库中。

例如一条记录:成分=“苹果”,配方=“苹果派”;不允许使用字段 recipe = "applePie" 插入另一个“apple”(在我的实际应用中,可能存在除此之外的其他字段,它们在两条记录上可能不同但它们都具有相同的成分和配方,所以除非该成分不存在,否则应拒绝第二次尝试插入值)。

对不起,如果这是非常基本的,我认为必须有一种方法可以本地处理这个问题,而无需我的程序在代码中进行选择和比较。我不知道我解释得有多好,如果您需要澄清,请告诉我。

谢谢!

【问题讨论】:

  • “这很难解释”——然后minimal reproducible example,不管怎样,这里的每个问题都需要它,肯定会有很大帮助。
  • 对不起,还是有人设法回答了!

标签: sqlite unique-constraint


【解决方案1】:

在表的CREATE 语句中为ingredientrecipe 列的组合定义UNIQUE 约束:

CREATE TABLE tablename (
  recipe TEXT,
  ingredient TEXT,
  UNIQUE(recipe, ingredient)
)

现在,如果您尝试插入具有相同 recipeingredient 的行作为现有行,您将收到错误并且不会插入新行。

【讨论】:

    猜你喜欢
    • 2020-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-26
    • 2018-07-30
    • 2021-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多