采购员Purchaser(工号Bno,姓名Bname,电话Bphone) 供应商Supplier(供应商编号Sno,名称Sname,电话Sphone) 商品Commodity(商品编号Cno,商品名称Cname,商品价格Cprice) 进货单Purchase(进货单号Pno,工号Bno,供应商编号Sno,商品编号Cno,进货数量Pcount,采购日期Pdate ) 仓库Warehouse (仓库编号Wno,仓库名称Wname) 库存Inventory(库存编号Ino,商品编号Cno,仓库编号Wno,库存数量Icount) -SqlServer中创建在进货单表中插入数据时自动更新库存表的触发器
时间: 2024-03-04 08:52:38 浏览: 21
可以使用触发器来在进货单表中插入数据时自动更新库存表。具体实现可以参考以下代码:
CREATE TRIGGER update_inventory_trigger
ON Purchase
AFTER INSERT
AS
BEGIN
-- 更新库存表中相应商品和仓库的库存数量
UPDATE Inventory
SET Icount = Icount + i.Pcount
FROM Inventory i
JOIN inserted ON i.Cno = inserted.Cno AND i.Wno = inserted.Wno
END
这个触发器会在向进货单表中插入数据后自动触发。它会根据插入的数据,更新库存表中相应商品和仓库的库存数量。注意,在触发器中,我们可以直接使用inserted表来引用进货单表中插入的数据,而不需要显式地指定表名。
相关问题
Java代码 某商场需要对进货商品进行管理,商品包括商品编号、商品名称、商品的价格、商 品的数量、总价、进货人等信息,商品信息保存在文件中,文件名为当前日期.csv,如 20230531.csv,表示 2023 年 5 月 31 日的进货文件。系统具有商品查询、商品录入、商 品信息保存、商品信息读取等功能。
好的,以下是一个简单的Java代码实现商场进货商品管理系统的功能,包括商品信息录入、商品信息查询、商品信息保存与读取等功能。代码如下:
```
import java.util.*;
import java.io.*;
// 商品类
class Commodity {
private String number; // 商品编号
private String name; // 商品名称
private double price; // 商品价格
private int quantity; // 商品数量
private double total; // 总价
private String purchaser; // 进货人
// 构造方法
public Commodity(String number, String name, double price, int quantity, String purchaser) {
this.number = number;
this.name = name;
this.price = price;
this.quantity = quantity;
this.total = price * quantity;
this.purchaser = purchaser;
}
// toString方法
public String toString() {
return number + "," + name + "," + price + "," + quantity + "," + total + "," + purchaser;
}
}
// 商品管理类
class CommodityManager {
private ArrayList<Commodity> commodities; // 商品列表
// 构造方法
public CommodityManager() {
commodities = new ArrayList<Commodity>();
}
// 商品信息录入
public void addCommodity() {
Scanner in = new Scanner(System.in);
System.out.print("请输入商品编号:");
String number = in.nextLine();
System.out.print("请输入商品名称:");
String name = in.nextLine();
System.out.print("请输入商品价格:");
double price = in.nextDouble();
System.out.print("请输入商品数量:");
int quantity = in.nextInt();
in.nextLine(); // 读取换行符
System.out.print("请输入进货人:");
String purchaser = in.nextLine();
Commodity commodity = new Commodity(number, name, price, quantity, purchaser);
commodities.add(commodity);
System.out.println("商品信息录入成功!");
}
// 商品信息查询
public void queryCommodity() {
Scanner in = new Scanner(System.in);
System.out.print("请输入要查询的商品编号或商品名称:");
String keyword = in.nextLine();
boolean flag = false;
for (Commodity commodity : commodities) {
if (commodity.toString().contains(keyword)) {
System.out.println(commodity.toString());
flag = true;
}
}
if (!flag) {
System.out.println("没有找到符合条件的商品!");
}
}
// 商品信息保存
public void saveCommodity() {
try {
Date date = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String fileName = sdf.format(date) + ".csv";
FileWriter fw = new FileWriter(fileName);
for (Commodity commodity : commodities) {
fw.write(commodity.toString() + "\n");
}
fw.close();
System.out.println("商品信息保存成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
// 商品信息读取
public void loadCommodity() {
Scanner in = new Scanner(System.in);
System.out.print("请输入要读取的文件名:");
String fileName = in.nextLine();
try {
FileReader fr = new FileReader(fileName);
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
String[] fields = line.split(",");
String number = fields[0];
String name = fields[1];
double price = Double.parseDouble(fields[2]);
int quantity = Integer.parseInt(fields[3]);
double total = Double.parseDouble(fields[4]);
String purchaser = fields[5];
Commodity commodity = new Commodity(number, name, price, quantity, purchaser);
commodities.add(commodity);
}
br.close();
fr.close();
System.out.println("商品信息读取成功!");
} catch (IOException e) {
e.printStackTrace();
}
}
}
// 主程序
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
CommodityManager manager = new CommodityManager();
while (true) {
System.out.println("请选择要执行的操作:");
System.out.println("1.商品信息录入");
System.out.println("2.商品信息查询");
System.out.println("3.商品信息保存");
System.out.println("4.商品信息读取");
System.out.println("5.退出程序");
int choice = in.nextInt();
switch (choice) {
case 1:
manager.addCommodity();
break;
case 2:
manager.queryCommodity();
break;
case 3:
manager.saveCommodity();
break;
case 4:
manager.loadCommodity();
break;
case 5:
System.exit(0);
default:
System.out.println("无效的选择,请重新输入!");
break;
}
}
}
}
```
在这个程序中,我们定义了一个Commodity类来存储商品信息,包括商品编号、商品名称、商品价格、商品数量、总价、进货人等信息。然后我们定义了一个CommodityManager类来管理商品信息,包括商品信息录入、商品信息查询、商品信息保存与读取等功能。最后我们在主程序中使用一个循环来不断接收用户的选择,根据用户的选择来调用相应的功能。
销售部门销售前需检查采购的库存信息,发货后需修改采购的库存信息。采购部门根据商品库存信息和市场需要,对库存紧缺商品进行采购。 实际销售过程还需考虑支付方式、会员积分抵扣费用、商品活动打折等诸多情况,本案里并未考虑,请同学们在熟练掌握销售部门现有业务的数据库实现基础上,可进一步结合实际业务需要,开展扩展性数据库设计工作。
针对上述业务需求,可以设计以下数据库表:
1. 商品表(Product):包含商品编号、名称、描述、分类、价格等信息。
2. 库存表(Inventory):包含商品编号、库存量、入库时间等信息。
3. 采购表(Purchase):包含采购单号、商品编号、采购数量、采购时间等信息。
4. 销售表(Sale):包含销售单号、商品编号、销售数量、销售时间、支付方式、会员积分、抵扣费用、折扣等信息。
5. 客户表(Customer):包含客户编号、姓名、联系方式等信息。
6. 员工表(Employee):包含员工编号、姓名、职位等信息。
7. 销售员表(Salesperson):包含销售员编号、员工编号等信息。
8. 采购员表(Purchaser):包含采购员编号、员工编号等信息。
9. 供应商表(Supplier):包含供应商编号、名称、联系方式等信息。
通过以上表的设计,可以满足商品采购、库存管理和销售业务的需求。同时,可以根据实际业务需求进行扩展和优化设计。例如,可以增加订单表、退货表、配送表等表格,以便更好地管理销售和物流业务。