在 SQLite3 中,有没有办法在另一个字段具有相同值时不允许重复字段?
In SQLite3, is there a way to not allow a duplicate field when another field is the same value?
这很难解释,这可能就是我找不到答案的原因。例如,我有一个 table 的“食谱”、“成分”。成分显然会被重复用于不同的食谱,所以我不能使用 UNIQUE,但我希望命令拒绝任何尝试插入特定食谱的数据库,而该食谱中已经存在该成分。
比如一条记录: ingredient = "apple", recipe = "applePie";不允许插入另一个字段 recipe = "applePie" 的“apple”(在我的实际应用程序中,除此之外的其他字段可能存在,它们在两个记录上可能不同,但它们都具有相同的成分和配方,所以除非成分不存在,否则应拒绝第二次插入值的尝试。
抱歉,如果这是非常基本的,我想一定有一种方法可以本地处理这个问题,而不需要我的程序 select 并在代码中进行比较。我不知道我解释得有多好,如果您需要澄清,请告诉我。
谢谢!
在 table 的 CREATE
语句中,为 ingredient
和 recipe
列的组合定义一个 UNIQUE
约束:
CREATE TABLE tablename (
recipe TEXT,
ingredient TEXT,
UNIQUE(recipe, ingredient)
)
现在,如果您尝试插入与现有行具有相同 recipe
和 ingredient
的行,您将收到错误消息并且不会插入新行。
这很难解释,这可能就是我找不到答案的原因。例如,我有一个 table 的“食谱”、“成分”。成分显然会被重复用于不同的食谱,所以我不能使用 UNIQUE,但我希望命令拒绝任何尝试插入特定食谱的数据库,而该食谱中已经存在该成分。
比如一条记录: ingredient = "apple", recipe = "applePie";不允许插入另一个字段 recipe = "applePie" 的“apple”(在我的实际应用程序中,除此之外的其他字段可能存在,它们在两个记录上可能不同,但它们都具有相同的成分和配方,所以除非成分不存在,否则应拒绝第二次插入值的尝试。
抱歉,如果这是非常基本的,我想一定有一种方法可以本地处理这个问题,而不需要我的程序 select 并在代码中进行比较。我不知道我解释得有多好,如果您需要澄清,请告诉我。
谢谢!
在 table 的 CREATE
语句中,为 ingredient
和 recipe
列的组合定义一个 UNIQUE
约束:
CREATE TABLE tablename (
recipe TEXT,
ingredient TEXT,
UNIQUE(recipe, ingredient)
)
现在,如果您尝试插入与现有行具有相同 recipe
和 ingredient
的行,您将收到错误消息并且不会插入新行。