【发布时间】:2022-01-05 13:59:18
【问题描述】:
我想做的是让 SQL 维护我的数据的完整性,而不是通过我的应用程序来维护。我希望 SQL 不会让我添加重复的项目每个价目表。
如果我有 3 个表“PriceList”、“Prices”和“InventoryItems”
列
价格表: ID、名称
InventoryItem: ID、SKU、名称
价格: ID、ListID、ItemID、价格
我不能在 price.itemid 上设置唯一值,因为这不允许我将相同的商品添加到多个价目表中。
| ID | ListID | ItemID | Price |
|---|---|---|---|
| 1 | 1 | 106 | 25.35 |
| 2 | 1 | 122 | 45.85 |
| 3 | 1 | 122 | 33.24 |
| 4 | 1 | 136 | 86.33 |
在上面的示例中,我希望有一个约束来阻止添加第 3 行上的项目,因为已经有一个 itemID 122 链接到 ListID 1
这可以通过关系/索引或其他方法在 SQL 中完成吗?
【问题讨论】:
-
你的意思是
UNIQUE CONSTRAINT? -
将其添加为唯一索引? google.com/…
-
另一种选择是将 ListID、ItemID 设为复合主键并删除 ID 列代理键。
标签: sql sql-server database