微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 SQLite3 中,当另一个字段的值相同时,有没有办法不允许重复字段?

如何解决在 SQLite3 中,当另一个字段的值相同时,有没有办法不允许重复字段?

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

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

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

谢谢!

解决方法

在表的 CREATE 语句中为列 UNIQUEingredient 的组合定义一个 recipe 约束:

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

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。