SQL约束/检查连接表

时间:2013-04-10 03:06:14

标签: sql constraints

我有三个表:storeproductstoreproduct

storeproduct表中的内容并不重要,只知道storeID表中有store,{{1}在productID表中。但是,product表会跟踪每个storeproduct的{​​{1}}个不同的product。所以store表有两列。 storeproduct列和storeID列,productIDstore表中的外键。

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

注意:我不希望product语句执行此操作。我只是想知道在创建表时是否有办法设置约束或检查。

如果已有50个产品(行)具有相同的selectinsert,则用户无法storeproduct进入storeID表格。 delete表如果删除一行将导致该storeproduct的最后一行消失。

storeID表可能如下所示

storeproduct

1 个答案:

答案 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

对你来说不是一个完整的答案,而是需要考虑的事情,希望能让你顺利前往。