我有三个表:store
,product
,storeproduct
。
store
和product
表中的内容并不重要,只知道storeID
表中有store
,{{1}在productID
表中。但是,product
表会跟踪每个storeproduct
的{{1}}个不同的product
。所以store
表有两列。 storeproduct
列和storeID
列,productID
和store
表中的外键。
有没有办法对任何表格进行约束或检查,以确保商店必须拥有超过0个产品,少于50个产品。
注意:我不希望product
语句执行此操作。我只是想知道在创建表时是否有办法设置约束或检查。
如果已有50个产品(行)具有相同的select
或insert
,则用户无法storeproduct
进入storeID
表格。 delete
表如果删除一行将导致该storeproduct
的最后一行消失。
storeID
表可能如下所示
storeproduct
答案 0 :(得分:1)
实际上,根据您的数据库,您可以执行此操作。
Oracle(可能还有其他人)提供了可以应用约束的物化视图。所以你可以使用一列PRODUCTS_IN_STORES(类似于select storeID, count(*) as PRODUCTS_IN_STORES from stores left outer join storeproduct on store.storeid=storeproduct.storeid group by store.storeid
来创建MV。然后对它进行约束,断言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
对你来说不是一个完整的答案,而是需要考虑的事情,希望能让你顺利前往。