题目三: 商品(编号,品名,进价,库存,售价,厂商编号) 顾客(卡号,姓名,电话,积分) 厂商(编号,厂址,名称、电话) 销售(顾客卡号,商品编号,数量,日期) 定义一个事务,完成下列步骤: 1按编号取某厂商出产的商品平均价格,若平均价格小于20,给每种商品增加一元,直至其平均价格超过20(每增一次显示一次)。 2显示所有商品名称 、价格。 3 若有超过100元的,取消上述操作。 4提交后显示该厂商的各种商品和价格。
时间: 2024-03-27 21:37:27 浏览: 59
商品的进价售价金额核算法.pdf
以下是实现该事务的 SQL 代码:
```
BEGIN TRANSACTION;
-- Step 1: 按编号取某厂商出产的商品平均价格,若平均价格小于20,给每种商品增加一元,直至其平均价格超过20
DECLARE @manu_id INT = 1; -- 假设厂商编号为 1
DECLARE @avg_price FLOAT;
SELECT @avg_price = AVG(sell_price) FROM 商品 WHERE 厂商编号 = @manu_id;
WHILE @avg_price < 20
BEGIN
UPDATE 商品 SET sell_price = sell_price + 1 WHERE 厂商编号 = @manu_id;
SELECT @avg_price = AVG(sell_price) FROM 商品 WHERE 厂商编号 = @manu_id;
PRINT '商品价格已增加,平均价格为 ' + CAST(@avg_price AS VARCHAR);
END
-- Step 2: 显示所有商品名称、价格
SELECT 品名, sell_price FROM 商品;
-- Step 3: 若有超过 100 元的,取消上述操作
DECLARE @max_price FLOAT = 100;
IF EXISTS (SELECT * FROM 商品 WHERE sell_price > @max_price)
BEGIN
ROLLBACK TRANSACTION;
PRINT '有商品价格超过 ' + CAST(@max_price AS VARCHAR) + ',已取消操作。';
END
ELSE
BEGIN
-- Step 4: 提交后显示该厂商的各种商品和价格
SELECT 品名, sell_price FROM 商品 WHERE 厂商编号 = @manu_id;
COMMIT TRANSACTION;
END
```
注意:该代码只是一个示例,实际应用中需要根据具体情况进行修改和优化。同时,事务的具体实现方式也可能因数据库管理系统的不同而有所不同。
阅读全文