【发布时间】:2011-05-31 12:53:55
【问题描述】:
我有以下场景,业务规则和数据库架构,我想只使用 SQL 更新客户和销售代表表,同时保留业务规则。我该怎么做。
场景:
假设 Premier Products 希望将所有客户和销售额 代表圣诞节奖金。所有客户的余额将减少 100 美元,他们的订单金额增加了 50 美元。增加的金额 订单流向他们的销售代表。但是由于订单上的销售代表金额不能超过 $1000 (BR4) 的限制, 一些销售代表不会获得奖金。
(a) 如何在纯 SQL 中实现这一点,同时保留所有业务规则。
BR1。客户欠款总额不得超过其信用额度。
BR2。销售代表的订单金额与其客户的金额相同。
BR3。所有新客户都会获得 100 美元的信用额度,即初始余额为 -100 美元。
BR4。销售代表无权就订单超过 1000 美元的销售额收取任何佣金。
/*-- SLSREP Table */
CREATE TABLE SLSREP
(SLSRNUMB DECIMAL(2),
TOTCOMM DECIMAL(7,2),
COMMRATE DECIMAL(3,2) CONSTRAINT CK_commrate CHECK( commrate BETWEEN 0 AND 1),
AMOUNTONORDER DECIMAL(9,2),
CONSTRAINT PK_SLSREP PRIMARY KEY (SLSRNUMB));
/*-- Customer Table */
CREATE TABLE CUSTOMER
(CUSTNUMB DECIMAL(3),
BALANCE DECIMAL(7,2) ,
CREDLIM DECIMAL(5) CONSTRAINT NN_credlim NOT NULL ,
SLSRNUMB DECIMAL(2) ,
AMOUNTONORDER DECIMAL(9,2) ,
CONSTRAINT PK_CUSTOMER PRIMARY KEY (CUSTNUMB),
CONSTRAINT FK_CUSTOMER_slsrnumb FOREIGN KEY (SLSRNUMB) REFERENCES SLSREP,
CONSTRAINT CK_credit CHECK (balance + AMOUNTONORDER <= credlim));
【问题讨论】:
标签: sql