1

我有三个表:store, product, storeproduct

store和表中的内容并不重要product,只要知道表中有 astoreID和表中的storea即可。然而,该表跟踪每个不同的 s 。所以表有两列。列和列,都是来自和表的外键。productIDproductstoreproductproductstorestoreproductstoreIDproductIDstoreproduct

有没有办法对任何表进行约束或检查,以确保商店必须有超过 0 个产品和少于 50 个产品。

注意:我不想要一个select声明来做到这一点。我只想知道在创建表时是否有办法设置约束或检查。

这样做的目的是,如果已经有 50 个产品(行)相同,则用户不能insert进入表,或者如果删除一行将导致最后一行消失,则用户不能从表中进入。storeproductstoreIDdeletestoreproductstoreID

storeproduct表可能如下所示

storeID productID
1       1
1       2
1       3
2       4
2       5
2       6
2       7
3       4
3       2
3       6
3       1
3       8
4

1 回答 1

1

实际上,根据您的数据库,您可能能够做到这一点。Oracle(也许还有其他人)提供可以应用约束的物化视图。因此,您可以使用 PRODUCTS_IN_STORES 列创建 MV(类似于select storeID, count(*) as PRODUCTS_IN_STORES from stores left outer join storeproduct on store.storeid=storeproduct.storeid group by store.storeid .然后对其施加约束,断言 PRODUCTS_IN_STORES 介于 0 到 50 之间或其他任何值。

http://www.sqlsnippets.com/en/topic-12896.html

http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:21389386132607

对你来说不是一个完整的答案,而是一些需要思考的东西,希望能让你走上自己的道路。

于 2013-04-10T04:13:40.923 回答