如何将输入限制在此表中?

时间:2015-03-13 13:22:38

标签: sql sql-server triggers foreign-keys constraints

我试图建立一个比以前更多的数据库 - SQL并不是我的优势之一。

我有以下3个表格:

  • 产品有费率;
  • 产品还有产品详细信息。

我试图应用3个约束但没有取得多大成功,可以提供一些帮助 - 我不确定我是应该使用触发器还是FK /约束/触发器的组合来实现我想要的。

  • ProductRate每个ProductID只能包含一次出现IsPrimary = true;

  • ProductDetail行应该只能定义具有相同ProductID的ProductRate;

  • “产品详细信息”组(由ProductID定义)应至少包含一次定义为主要费率的费用。

任何建议表示赞赏。

enter image description here

1 个答案:

答案 0 :(得分:0)

以下是我将如何处理这个问题。

" ProductDetail行应该只能定义具有相同ProductID的ProductRate;" - 这很简单。您将ProductID设置为ProductDetail中的外键。

对于其他两个要求,我会对您的表结构稍作修改。我会在Product表中添加另一列,如PrimaryProductRateID。使该列不为null并具有ProductRate表的外键。这确保你只能拥有1,而且也是必需的。

我不建议使用类似的触发器。