如何基于其他列设置列的值

时间:2013-12-30 09:48:02

标签: sql oracle triggers

我有以下架构:

customer(cid,cname), 
books(isbn,price) 
orders(oid,cid,isbn,odate,quantity,value)

1. A customer can purchase any no.of books on a single order on the same date
2. A customer can purchase any no. of different types on a single orders
3. A customer can place multiple orders on a same day

因此,当客户下订单分别为121,141,其价格分别为500,500,数量为2,5时,列'值'必须分别填充1 * 500 = 500和5 * 500 = 2500。 因此,值列必须始终为数量*价格。如何在创建订单表期间指定此项?我需要一个触发器吗?

1 个答案:

答案 0 :(得分:0)

我认为您的模型存在问题:当订单可以包含多本图书时,您的orders表会通过books字段引用isbn表格! 我会添加一个中间表:

single_order(sid, oid, isbn, quantity)

通过orders字段引用oidorders的项目将是具有相应single_order的{​​{1}}项的总和。然后,oid字段将是value price books的{​​{1}}的总和,您可以使用联接轻松链接到这两个表