如何使用delete和update cascade设计这些sqlite表

时间:2012-08-06 10:52:46

标签: sqlite

我试着这样做:

带有RecipeID(主键和外键)和RecipeName(唯一)的

Recipe表。
带有IngredientID(Primay和外键)和IngredientName(唯一)的Ingredient表。 带有RecipeID,IngredientID和IngredientNme的RecipeDetail表。

  • 如果用户从成分表中删除成分,则必须删除RecipeDetail中包含此成分表的所有记录。
  • 如果用户从配方表中删除配方,则必须删除RecipeDetail中包含此RecipeId的所有记录。

有任何线索吗?感谢

1 个答案:

答案 0 :(得分:0)

Documentation解释了如何在表之间创建约束。要强制删除孤立记录,请使用ON DELETE CASCADE

还要确保外键支持is enabled.


您的创建脚本可能如下所示

CREATE TABLE RecipeDetail(
  RecipeID      INTEGER REFERENCES Recipe(RecipeID) ON DELETE CASCADE,
  IngredientID  INTEGER REFERENCES Ingredient(IngredientID) ON DELETE CASCADE,
  PRIMARY KEY (RecipeID, IngredientID)
);

主键确保没有任何成分分配给配方两次。 IngredientName不应存储在交集表中,这会导致冗余数据。