|
|
/*
|
|
|
Navicat Premium Dump SQL
|
|
|
|
|
|
Source Server : localhost
|
|
|
Source Server Type : MySQL
|
|
|
Source Server Version : 90100 (9.1.0)
|
|
|
Source Host : localhost:3306
|
|
|
Source Schema : demo
|
|
|
|
|
|
Target Server Type : MySQL
|
|
|
Target Server Version : 90100 (9.1.0)
|
|
|
File Encoding : 65001
|
|
|
|
|
|
Date: 29/12/2024 21:43:27
|
|
|
*/
|
|
|
|
|
|
SET NAMES utf8mb4;
|
|
|
SET FOREIGN_KEY_CHECKS = 0;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for customer
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `customer`;
|
|
|
CREATE TABLE `customer` (
|
|
|
`CustomerID` int NOT NULL AUTO_INCREMENT,
|
|
|
`CustomerName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`ContactNumber` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`Email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`CustomerAddress` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
PRIMARY KEY (`CustomerID`) USING BTREE
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of customer
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `customer` VALUES (1, '客户A', '13800000001', 'customerA@example.com', '北京市海淀区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (2, '客户B', '13800000002', 'customerB@example.com', '上海市黄浦区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (3, '客户C', '13800000003', 'customerC@example.com', '广州市越秀区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (4, '客户D', '13800000004', 'customerD@example.com', '深圳市福田区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (5, '客户E', '13800000005', 'customerE@example.com', '成都市锦江区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (6, '客户F', '13800000006', 'customerF@example.com', '杭州市拱墅区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (7, '客户G', '13800000007', 'customerG@example.com', '武汉市武昌区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (8, '客户H', '13800000008', 'customerH@example.com', '南京市玄武区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (9, '客户I', '13800000009', 'customerI@example.com', '西安市碑林区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (10, '客户J', '13800000010', 'customerJ@example.com', '重庆市江北区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (11, '客户A', '13800000001', 'customerA@example.com', '北京市海淀区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (12, '客户B', '13800000002', 'customerB@example.com', '上海市黄浦区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (13, '客户C', '13800000003', 'customerC@example.com', '广州市越秀区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (14, '客户D', '13800000004', 'customerD@example.com', '深圳市福田区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (15, '客户E', '13800000005', 'customerE@example.com', '成都市锦江区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (16, '客户F', '13800000006', 'customerF@example.com', '杭州市拱墅区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (17, '客户G', '13800000007', 'customerG@example.com', '武汉市武昌区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (18, '客户H', '13800000008', 'customerH@example.com', '南京市玄武区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (19, '客户王继威', '13800000009', 'customerI@example.com', '西安市碑林区XX路XX号');
|
|
|
INSERT INTO `customer` VALUES (20, '客户李保航', '13800000010', 'customerJ@example.com', '重庆市江北区XX路XX号');
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for deleted_goods
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `deleted_goods`;
|
|
|
CREATE TABLE `deleted_goods` (
|
|
|
`DeletedGoodsID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`GoodsName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`DeletedDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP
|
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of deleted_goods
|
|
|
-- ----------------------------
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for employee
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `employee`;
|
|
|
CREATE TABLE `employee` (
|
|
|
`EmployeeID` int NOT NULL AUTO_INCREMENT,
|
|
|
`EmployeeName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`EmployeePosition` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`ContactNumber` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`Email` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
PRIMARY KEY (`EmployeeID`) USING BTREE,
|
|
|
INDEX `idx_employee_name`(`EmployeeName` ASC) USING BTREE,
|
|
|
UNIQUE INDEX `idx_employee_employeeid`(`EmployeeID` ASC) USING BTREE,
|
|
|
INDEX `idx_employee_EmployeePosition`(`EmployeePosition` ASC) USING BTREE,
|
|
|
INDEX `idx_employee_employeename`(`EmployeeName` ASC) USING BTREE
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of employee
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `employee` VALUES (1, '员工A', '仓库管理员', '13900000001', 'employeeA@example.com');
|
|
|
INSERT INTO `employee` VALUES (2, '员工B', '物流配送人员', '13900000002', 'employeeB@example.com');
|
|
|
INSERT INTO `employee` VALUES (3, '员工C', '采购人员', '13900000003', 'employeeC@example.com');
|
|
|
INSERT INTO `employee` VALUES (4, '员工D', '仓库管理员', '13900000004', 'employeeD@example.com');
|
|
|
INSERT INTO `employee` VALUES (5, '员工E', '物流配送人员', '13900000005', 'employeeE@example.com');
|
|
|
INSERT INTO `employee` VALUES (6, '员工F', '采购人员', '13900000006', 'employeeF@example.com');
|
|
|
INSERT INTO `employee` VALUES (7, '员工G', '仓库管理员', '13900000007', 'employeeG@example.com');
|
|
|
INSERT INTO `employee` VALUES (8, '员工H', '物流配送人员', '13900000008', 'employeeH@example.com');
|
|
|
INSERT INTO `employee` VALUES (9, '员工I', '采购人员', '13900000009', 'employeeI@example.com');
|
|
|
INSERT INTO `employee` VALUES (10, '员工J', '仓库管理员', '13900000010', 'employeeJ@example.com');
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for employee_log
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `employee_log`;
|
|
|
CREATE TABLE `employee_log` (
|
|
|
`LogID` int NOT NULL AUTO_INCREMENT,
|
|
|
`EmployeeID` int NULL DEFAULT NULL,
|
|
|
`OldEmployeeName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`NewEmployeeName` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`OldDepartment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`NewDepartment` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`ChangeDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
PRIMARY KEY (`LogID`) USING BTREE
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of employee_log
|
|
|
-- ----------------------------
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for goods
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `goods`;
|
|
|
CREATE TABLE `goods` (
|
|
|
`GoodsID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`GoodsName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`GoodsType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`ProductionDate` date NULL DEFAULT NULL,
|
|
|
`SafetyStock` int NOT NULL,
|
|
|
`PurchaseUnitPrice` decimal(8, 2) NOT NULL,
|
|
|
`SupplierID` int NULL DEFAULT NULL,
|
|
|
PRIMARY KEY (`GoodsID`) USING BTREE,
|
|
|
INDEX `FK_Goods_Supplier`(`SupplierID` ASC) USING BTREE,
|
|
|
INDEX `idx_goods_name`(`GoodsName` ASC) USING BTREE,
|
|
|
INDEX `idx_goods_type`(`GoodsType` ASC) USING BTREE,
|
|
|
INDEX `idx_production_date`(`ProductionDate` ASC) USING BTREE,
|
|
|
UNIQUE INDEX `idx_goods_goodsid`(`GoodsID` ASC) USING BTREE,
|
|
|
INDEX `idx_goods_GoodsType`(`GoodsType` ASC) USING BTREE,
|
|
|
INDEX `idx_goods_PurchaseUnitPrice`(`PurchaseUnitPrice` ASC) USING BTREE,
|
|
|
INDEX `idx_goods_GoodsType_PurchaseUnitPrice`(`GoodsType` ASC, `PurchaseUnitPrice` ASC) USING BTREE,
|
|
|
CONSTRAINT `FK_Goods_Supplier` FOREIGN KEY (`SupplierID`) REFERENCES `supplier` (`SupplierID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `goods_chk_1` CHECK (`SafetyStock` >= 0),
|
|
|
CONSTRAINT `goods_chk_2` CHECK (`PurchaseUnitPrice` >= 0)
|
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of goods
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `goods` VALUES ('G001', '电脑显示器', '电子产品', '2023-01-01', 10, 600.00, 1);
|
|
|
INSERT INTO `goods` VALUES ('G002', '运动鞋', '服装', '2023-02-01', 20, 80.00, 2);
|
|
|
INSERT INTO `goods` VALUES ('G003', '苹果手机', '电子产品', '2023-03-01', 15, 800.00, 3);
|
|
|
INSERT INTO `goods` VALUES ('G004', '牛奶', '食品', '2023-04-01', 30, 5.00, 4);
|
|
|
INSERT INTO `goods` VALUES ('G005', '衬衫', '服装', '2023-05-01', 18, 50.00, 5);
|
|
|
INSERT INTO `goods` VALUES ('G006', '打印机', '电子产品', '2023-06-01', 8, 300.00, 6);
|
|
|
INSERT INTO `goods` VALUES ('G007', '面包', '食品', '2023-07-01', 25, 3.00, 7);
|
|
|
INSERT INTO `goods` VALUES ('G008', '牛仔裤', '服装', '2023-08-01', 22, 60.00, 8);
|
|
|
INSERT INTO `goods` VALUES ('G009', '平板电脑', '电子产品', '2023-09-01', 12, 600.00, 9);
|
|
|
INSERT INTO `goods` VALUES ('G010', '果汁', '食品', '2023-10-01', 35, 4.00, 10);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for inboundrecord
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `inboundrecord`;
|
|
|
CREATE TABLE `inboundrecord` (
|
|
|
`InboundRecordID` int NOT NULL AUTO_INCREMENT,
|
|
|
`GoodsID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`WarehouseID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`InboundQuantity` int NOT NULL,
|
|
|
`InboundDate` date NOT NULL,
|
|
|
`EmployeeID` int NOT NULL,
|
|
|
PRIMARY KEY (`InboundRecordID`) USING BTREE,
|
|
|
INDEX `idx_inbound_record_goods_id`(`GoodsID` ASC) USING BTREE,
|
|
|
INDEX `idx_inbound_record_warehouse_id`(`WarehouseID` ASC) USING BTREE,
|
|
|
INDEX `idx_inbound_record_employee_id`(`EmployeeID` ASC) USING BTREE,
|
|
|
CONSTRAINT `FK_InboundRecord_Employee` FOREIGN KEY (`EmployeeID`) REFERENCES `employee` (`EmployeeID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `FK_InboundRecord_Goods` FOREIGN KEY (`GoodsID`) REFERENCES `goods` (`GoodsID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `FK_InboundRecord_Warehouse` FOREIGN KEY (`WarehouseID`) REFERENCES `warehouse` (`WarehouseID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `inboundrecord_chk_1` CHECK (`InboundQuantity` > 0)
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of inboundrecord
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `inboundrecord` VALUES (1, 'G001', 'WH01', 10, '2024-01-01', 1);
|
|
|
INSERT INTO `inboundrecord` VALUES (2, 'G002', 'WH02', 20, '2024-01-02', 2);
|
|
|
INSERT INTO `inboundrecord` VALUES (3, 'G003', 'WH03', 15, '2024-01-03', 3);
|
|
|
INSERT INTO `inboundrecord` VALUES (4, 'G004', 'WH04', 30, '2024-01-04', 4);
|
|
|
INSERT INTO `inboundrecord` VALUES (5, 'G005', 'WH05', 18, '2024-01-05', 5);
|
|
|
INSERT INTO `inboundrecord` VALUES (6, 'G006', 'WH06', 8, '2024-01-06', 6);
|
|
|
INSERT INTO `inboundrecord` VALUES (7, 'G007', 'WH07', 25, '2024-01-07', 7);
|
|
|
INSERT INTO `inboundrecord` VALUES (8, 'G008', 'WH08', 22, '2024-01-08', 8);
|
|
|
INSERT INTO `inboundrecord` VALUES (9, 'G009', 'WH09', 12, '2024-01-09', 9);
|
|
|
INSERT INTO `inboundrecord` VALUES (10, 'G010', 'WH10', 35, '2024-01-10', 10);
|
|
|
INSERT INTO `inboundrecord` VALUES (11, 'G001', 'WH01', 5, '2024-01-11', 1);
|
|
|
INSERT INTO `inboundrecord` VALUES (12, 'G002', 'WH02', 10, '2024-01-12', 2);
|
|
|
INSERT INTO `inboundrecord` VALUES (13, 'G003', 'WH03', 8, '2024-01-13', 3);
|
|
|
INSERT INTO `inboundrecord` VALUES (14, 'G004', 'WH04', 15, '2024-01-14', 4);
|
|
|
INSERT INTO `inboundrecord` VALUES (15, 'G005', 'WH05', 10, '2024-01-15', 5);
|
|
|
INSERT INTO `inboundrecord` VALUES (16, 'G006', 'WH06', 5, '2024-01-16', 6);
|
|
|
INSERT INTO `inboundrecord` VALUES (17, 'G007', 'WH07', 15, '2024-01-17', 7);
|
|
|
INSERT INTO `inboundrecord` VALUES (18, 'G008', 'WH08', 10, '2024-01-18', 8);
|
|
|
INSERT INTO `inboundrecord` VALUES (19, 'G009', 'WH09', 8, '2024-01-19', 9);
|
|
|
INSERT INTO `inboundrecord` VALUES (20, 'G010', 'WH10', 20, '2024-01-20', 10);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for order
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `order`;
|
|
|
CREATE TABLE `order` (
|
|
|
`OrderID` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`OrderDate` datetime NOT NULL,
|
|
|
`CustomerID` int NOT NULL,
|
|
|
`OrderStatus` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`customer_id` int NULL DEFAULT NULL,
|
|
|
PRIMARY KEY (`OrderID`) USING BTREE,
|
|
|
INDEX `idx_order_date`(`OrderDate` ASC) USING BTREE,
|
|
|
INDEX `idx_customer_id`(`CustomerID` ASC) USING BTREE,
|
|
|
UNIQUE INDEX `idx_order_orderid`(`OrderID` ASC) USING BTREE,
|
|
|
INDEX `idx_order_customerid`(`CustomerID` ASC) USING BTREE,
|
|
|
INDEX `idx_order_orderdate`(`OrderDate` ASC) USING BTREE,
|
|
|
INDEX `idx_order_status_date`(`OrderStatus` ASC, `OrderDate` ASC) USING BTREE,
|
|
|
CONSTRAINT `FK_Order_Customer` FOREIGN KEY (`CustomerID`) REFERENCES `customer` (`CustomerID`) ON DELETE RESTRICT ON UPDATE RESTRICT
|
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of order
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `order` VALUES ('1', '2024-01-01 00:00:00', 1, 'Completed', 101);
|
|
|
INSERT INTO `order` VALUES ('10', '2024-01-10 00:00:00', 5, 'Delivered', 105);
|
|
|
INSERT INTO `order` VALUES ('2', '2024-01-02 00:00:00', 2, 'Pending', 102);
|
|
|
INSERT INTO `order` VALUES ('3', '2024-01-03 00:00:00', 3, 'Processing', 103);
|
|
|
INSERT INTO `order` VALUES ('4', '2024-01-04 00:00:00', 4, 'Shipped', 104);
|
|
|
INSERT INTO `order` VALUES ('5', '2024-01-05 00:00:00', 5, 'Cancelled', 105);
|
|
|
INSERT INTO `order` VALUES ('6', '2024-01-06 00:00:00', 1, 'Completed', 101);
|
|
|
INSERT INTO `order` VALUES ('7', '2024-01-07 00:00:00', 2, 'Pending', 102);
|
|
|
INSERT INTO `order` VALUES ('8', '2024-01-08 00:00:00', 3, 'Processing', 103);
|
|
|
INSERT INTO `order` VALUES ('9', '2024-01-09 00:00:00', 4, 'Shipped', 104);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for order_log
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `order_log`;
|
|
|
CREATE TABLE `order_log` (
|
|
|
`LogID` int NOT NULL AUTO_INCREMENT,
|
|
|
`OrderID` int NULL DEFAULT NULL,
|
|
|
`OldStatus` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`NewStatus` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`ChangeDate` timestamp NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
PRIMARY KEY (`LogID`) USING BTREE
|
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of order_log
|
|
|
-- ----------------------------
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for orderdetail
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `orderdetail`;
|
|
|
CREATE TABLE `orderdetail` (
|
|
|
`OrderDetailID` int NOT NULL AUTO_INCREMENT,
|
|
|
`OrderID` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`GoodsID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`GoodsName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`GoodsSpecification` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`OrderQuantity` int NOT NULL,
|
|
|
`UnitPrice` decimal(10, 2) NOT NULL,
|
|
|
`TotalPrice` decimal(10, 2) NOT NULL,
|
|
|
PRIMARY KEY (`OrderDetailID`) USING BTREE,
|
|
|
INDEX `idx_order_detail_order_id`(`OrderID` ASC) USING BTREE,
|
|
|
INDEX `idx_order_detail_goods_id`(`GoodsID` ASC) USING BTREE,
|
|
|
CONSTRAINT `FK_OrderDetail_Goods` FOREIGN KEY (`GoodsID`) REFERENCES `goods` (`GoodsID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `FK_OrderDetail_Order` FOREIGN KEY (`OrderID`) REFERENCES `order` (`OrderID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `orderdetail_chk_1` CHECK (`OrderQuantity` >= 0),
|
|
|
CONSTRAINT `orderdetail_chk_2` CHECK (`UnitPrice` >= 0)
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 111 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of orderdetail
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `orderdetail` VALUES (1, '1', 'G001', '电脑显示器', '24 英寸高清显示器', 2, 500.00, 1000.00);
|
|
|
INSERT INTO `orderdetail` VALUES (2, '1', 'G003', '苹果手机', 'iPhone 13 128GB', 1, 800.00, 800.00);
|
|
|
INSERT INTO `orderdetail` VALUES (3, '2', 'G002', '运动鞋', '男款跑步鞋,尺码 42', 3, 80.00, 240.00);
|
|
|
INSERT INTO `orderdetail` VALUES (4, '2', 'G005', '衬衫', '白色纯棉衬衫,尺码 M', 2, 50.00, 100.00);
|
|
|
INSERT INTO `orderdetail` VALUES (5, '3', 'G004', '牛奶', '1L 装纯牛奶', 5, 5.00, 25.00);
|
|
|
INSERT INTO `orderdetail` VALUES (6, '3', 'G006', '打印机', '彩色喷墨打印机', 1, 300.00, 300.00);
|
|
|
INSERT INTO `orderdetail` VALUES (7, '4', 'G007', '面包', '全麦面包,500g', 4, 3.00, 12.00);
|
|
|
INSERT INTO `orderdetail` VALUES (8, '4', 'G008', '牛仔裤', '蓝色牛仔裤,尺码 32', 1, 60.00, 60.00);
|
|
|
INSERT INTO `orderdetail` VALUES (9, '5', 'G009', '平板电脑', 'iPad Air 10.5 英寸', 2, 600.00, 1200.00);
|
|
|
INSERT INTO `orderdetail` VALUES (10, '5', 'G010', '果汁', '橙汁,500ml', 6, 4.00, 24.00);
|
|
|
INSERT INTO `orderdetail` VALUES (101, '1', 'G001', '27寸高清电脑显示器', '分辨率:2560x1440,刷新率:144Hz', 3, 450.00, 1350.00);
|
|
|
INSERT INTO `orderdetail` VALUES (102, '1', 'G002', '专业跑鞋', '适合长跑,轻便透气,尺码:43', 2, 120.00, 240.00);
|
|
|
INSERT INTO `orderdetail` VALUES (103, '2', 'G003', '智能手机', '存储:256GB,摄像头:4800万像素', 1, 750.00, 750.00);
|
|
|
INSERT INTO `orderdetail` VALUES (104, '2', 'G004', '纯牛奶', '有机,2L装', 4, 8.00, 32.00);
|
|
|
INSERT INTO `orderdetail` VALUES (105, '3', 'G005', '男士衬衫', '纯棉材质,长袖,尺码:L', 5, 60.00, 300.00);
|
|
|
INSERT INTO `orderdetail` VALUES (106, '3', 'G006', '彩色激光打印机', '打印速度:20页/分钟', 1, 400.00, 400.00);
|
|
|
INSERT INTO `orderdetail` VALUES (107, '4', 'G007', '全麦面包', '无麸质,700g装', 6, 5.00, 30.00);
|
|
|
INSERT INTO `orderdetail` VALUES (108, '4', 'G008', '女士牛仔裤', '修身版型,蓝色,尺码:28', 3, 80.00, 240.00);
|
|
|
INSERT INTO `orderdetail` VALUES (109, '5', 'G009', '平板电脑', '10.1寸屏幕,64GB存储', 2, 550.00, 1100.00);
|
|
|
INSERT INTO `orderdetail` VALUES (110, '5', 'G010', '苹果汁', '鲜榨,1L装', 7, 6.00, 42.00);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for outboundrecord
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `outboundrecord`;
|
|
|
CREATE TABLE `outboundrecord` (
|
|
|
`OutboundRecordID` int NOT NULL AUTO_INCREMENT,
|
|
|
`GoodsID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`WarehouseID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`OutboundQuantity` int NOT NULL,
|
|
|
`OutboundDate` date NOT NULL,
|
|
|
`OrderID` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
|
|
|
`EmployeeID` int NOT NULL,
|
|
|
PRIMARY KEY (`OutboundRecordID`) USING BTREE,
|
|
|
INDEX `idx_outbound_record_goods_id`(`GoodsID` ASC) USING BTREE,
|
|
|
INDEX `idx_outbound_record_warehouse_id`(`WarehouseID` ASC) USING BTREE,
|
|
|
INDEX `idx_outbound_record_order_id`(`OrderID` ASC) USING BTREE,
|
|
|
INDEX `idx_outbound_record_employee_id`(`EmployeeID` ASC) USING BTREE,
|
|
|
UNIQUE INDEX `idx_outboundrecord_recordid`(`OutboundRecordID` ASC) USING BTREE,
|
|
|
INDEX `idx_outboundrecord_warehouseid`(`WarehouseID` ASC) USING BTREE,
|
|
|
INDEX `idx_outboundrecord_orderid`(`OrderID` ASC) USING BTREE,
|
|
|
INDEX `idx_outboundrecord_warehouse_date`(`WarehouseID` ASC, `OutboundDate` ASC) USING BTREE,
|
|
|
CONSTRAINT `FK_OutboundRecord_Employee` FOREIGN KEY (`EmployeeID`) REFERENCES `employee` (`EmployeeID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `FK_OutboundRecord_Goods` FOREIGN KEY (`GoodsID`) REFERENCES `goods` (`GoodsID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `FK_OutboundRecord_Order` FOREIGN KEY (`OrderID`) REFERENCES `order` (`OrderID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `FK_OutboundRecord_Warehouse` FOREIGN KEY (`WarehouseID`) REFERENCES `warehouse` (`WarehouseID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `outboundrecord_chk_1` CHECK (`OutboundQuantity` > 0)
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 141 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of outboundrecord
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `outboundrecord` VALUES (1, 'G001', 'WH01', 20, '2024-01-01', '1', 1);
|
|
|
INSERT INTO `outboundrecord` VALUES (2, 'G002', 'WH02', 10, '2024-01-02', '2', 2);
|
|
|
INSERT INTO `outboundrecord` VALUES (3, 'G003', 'WH03', 8, '2024-01-03', '3', 3);
|
|
|
INSERT INTO `outboundrecord` VALUES (4, 'G004', 'WH04', 3, '2024-01-04', '4', 4);
|
|
|
INSERT INTO `outboundrecord` VALUES (5, 'G005', 'WH05', 12, '2024-01-05', '5', 5);
|
|
|
INSERT INTO `outboundrecord` VALUES (6, 'G006', 'WH06', 7, '2024-01-06', '6', 6);
|
|
|
INSERT INTO `outboundrecord` VALUES (7, 'G007', 'WH07', 9, '2024-01-07', '7', 7);
|
|
|
INSERT INTO `outboundrecord` VALUES (8, 'G008', 'WH08', 4, '2024-01-08', '8', 8);
|
|
|
INSERT INTO `outboundrecord` VALUES (9, 'G009', 'WH09', 6, '2024-01-09', '9', 9);
|
|
|
INSERT INTO `outboundrecord` VALUES (10, 'G010', 'WH10', 15, '2024-01-10', '10', 10);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for supplier
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `supplier`;
|
|
|
CREATE TABLE `supplier` (
|
|
|
`SupplierID` int NOT NULL AUTO_INCREMENT,
|
|
|
`SupplyPrice` decimal(10, 2) NOT NULL,
|
|
|
`SupplierName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
PRIMARY KEY (`SupplierID`) USING BTREE,
|
|
|
INDEX `idx_supplier_name`(`SupplierName` ASC) USING BTREE,
|
|
|
CONSTRAINT `supplier_chk_1` CHECK (`SupplyPrice` >= 0)
|
|
|
) ENGINE = InnoDB AUTO_INCREMENT = 11 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of supplier
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `supplier` VALUES (1, 10.50, '供应商A');
|
|
|
INSERT INTO `supplier` VALUES (2, 12.30, '供应商B');
|
|
|
INSERT INTO `supplier` VALUES (3, 9.80, '供应商C');
|
|
|
INSERT INTO `supplier` VALUES (4, 15.20, '供应商D');
|
|
|
INSERT INTO `supplier` VALUES (5, 11.00, '供应商E');
|
|
|
INSERT INTO `supplier` VALUES (6, 13.50, '供应商F');
|
|
|
INSERT INTO `supplier` VALUES (7, 14.10, '供应商G');
|
|
|
INSERT INTO `supplier` VALUES (8, 8.90, '供应商H');
|
|
|
INSERT INTO `supplier` VALUES (9, 16.00, '供应商I');
|
|
|
INSERT INTO `supplier` VALUES (10, 12.80, '供应商J');
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for warehouse
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `warehouse`;
|
|
|
CREATE TABLE `warehouse` (
|
|
|
`WarehouseID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`WarehouseName` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`WarehouseAddress` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`WarehouseArea` int NOT NULL,
|
|
|
PRIMARY KEY (`WarehouseID`) USING BTREE,
|
|
|
INDEX `idx_warehouse_name`(`WarehouseName` ASC) USING BTREE,
|
|
|
INDEX `idx_warehouse_address`(`WarehouseAddress` ASC) USING BTREE,
|
|
|
UNIQUE INDEX `idx_warehouse_warehouseid`(`WarehouseID` ASC) USING BTREE,
|
|
|
CONSTRAINT `warehouse_chk_1` CHECK (`WarehouseArea` > 0)
|
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of warehouse
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `warehouse` VALUES ('WH01', '北京仓库', '北京市朝阳区XX路XX号', 1000);
|
|
|
INSERT INTO `warehouse` VALUES ('WH02', '上海仓库', '上海市浦东新区XX路XX号', 1200);
|
|
|
INSERT INTO `warehouse` VALUES ('WH03', '广州仓库', '广州市天河区XX路XX号', 800);
|
|
|
INSERT INTO `warehouse` VALUES ('WH04', '深圳仓库', '深圳市南山区XX路XX号', 900);
|
|
|
INSERT INTO `warehouse` VALUES ('WH05', '成都仓库', '成都市高新区XX路XX号', 700);
|
|
|
INSERT INTO `warehouse` VALUES ('WH06', '杭州仓库', '杭州市西湖区XX路XX号', 600);
|
|
|
INSERT INTO `warehouse` VALUES ('WH07', '武汉仓库', '武汉市江汉区XX路XX号', 500);
|
|
|
INSERT INTO `warehouse` VALUES ('WH08', '南京仓库', '南京市鼓楼区XX路XX号', 400);
|
|
|
INSERT INTO `warehouse` VALUES ('WH09', '西安仓库', '西安市雁塔区XX路XX号', 300);
|
|
|
INSERT INTO `warehouse` VALUES ('WH10', '重庆仓库', '重庆市渝中区XX路XX号', 550);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Table structure for warehousestoragearea
|
|
|
-- ----------------------------
|
|
|
DROP TABLE IF EXISTS `warehousestoragearea`;
|
|
|
CREATE TABLE `warehousestoragearea` (
|
|
|
`AreaID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`WarehouseID` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`AreaType` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
|
|
|
`AreaCapacity` int NOT NULL,
|
|
|
PRIMARY KEY (`AreaID`) USING BTREE,
|
|
|
INDEX `FK_Area_Warehouse`(`WarehouseID` ASC) USING BTREE,
|
|
|
INDEX `idx_area_type`(`AreaType` ASC) USING BTREE,
|
|
|
CONSTRAINT `FK_Area_Warehouse` FOREIGN KEY (`WarehouseID`) REFERENCES `warehouse` (`WarehouseID`) ON DELETE RESTRICT ON UPDATE RESTRICT,
|
|
|
CONSTRAINT `warehousestoragearea_chk_1` CHECK (`AreaCapacity` >= 0)
|
|
|
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Records of warehousestoragearea
|
|
|
-- ----------------------------
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A01', 'WH01', '货架区', 500);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A02', 'WH01', '堆垛区', 300);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A03', 'WH02', '货架区', 400);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A04', 'WH02', '堆垛区', 250);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A05', 'WH03', '货架区', 350);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A06', 'WH03', '堆垛区', 200);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A07', 'WH04', '货架区', 300);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A08', 'WH04', '堆垛区', 180);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A09', 'WH05', '货架区', 250);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A10', 'WH05', '堆垛区', 150);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A11', 'WH06', '货架区', 200);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A12', 'WH06', '堆垛区', 120);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A13', 'WH07', '货架区', 180);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A14', 'WH07', '堆垛区', 100);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A15', 'WH08', '货架区', 150);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A16', 'WH08', '堆垛区', 80);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A17', 'WH09', '货架区', 120);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A18', 'WH09', '堆垛区', 60);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A19', 'WH10', '货架区', 180);
|
|
|
INSERT INTO `warehousestoragearea` VALUES ('A20', 'WH10', '堆垛区', 100);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- View structure for employee_order_info
|
|
|
-- ----------------------------
|
|
|
DROP VIEW IF EXISTS `employee_order_info`;
|
|
|
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `employee_order_info` AS select `e`.`EmployeeName` AS `EmployeeName`,`e`.`EmployeePosition` AS `EmployeePosition`,`o`.`OrderID` AS `OrderID`,`o`.`OrderDate` AS `OrderDate`,`o`.`OrderStatus` AS `OrderStatus` from (`employee` `e` join `order` `o` on((`e`.`EmployeeID` = `o`.`OrderID`)));
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- View structure for goods_with_outbound
|
|
|
-- ----------------------------
|
|
|
DROP VIEW IF EXISTS `goods_with_outbound`;
|
|
|
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `goods_with_outbound` AS select `g`.`GoodsID` AS `GoodsID`,`g`.`GoodsName` AS `GoodsName`,`g`.`GoodsType` AS `GoodsType`,`g`.`ProductionDate` AS `ProductionDate`,`g`.`SafetyStock` AS `SafetyStock`,`g`.`PurchaseUnitPrice` AS `PurchaseUnitPrice`,`g`.`SupplierID` AS `SupplierID`,`orr`.`OutboundQuantity` AS `OutboundQuantity`,`orr`.`OutboundDate` AS `OutboundDate` from (`goods` `g` join `outboundrecord` `orr` on((`g`.`GoodsID` = `orr`.`GoodsID`)));
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- View structure for high_value_orders
|
|
|
-- ----------------------------
|
|
|
DROP VIEW IF EXISTS `high_value_orders`;
|
|
|
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `high_value_orders` AS select `o`.`OrderID` AS `OrderID`,`o`.`OrderDate` AS `OrderDate`,`o`.`CustomerID` AS `CustomerID`,sum(`od`.`TotalPrice`) AS `OrderTotalPrice` from (`order` `o` join `orderdetail` `od` on((`o`.`OrderID` = `od`.`OrderID`))) group by `o`.`OrderID`,`o`.`OrderDate`,`o`.`CustomerID` having (sum(`od`.`TotalPrice`) > 1000);
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- View structure for incomplete_orders
|
|
|
-- ----------------------------
|
|
|
DROP VIEW IF EXISTS `incomplete_orders`;
|
|
|
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `incomplete_orders` AS select `o`.`OrderID` AS `OrderID`,`o`.`OrderDate` AS `OrderDate`,`o`.`CustomerID` AS `CustomerID`,`o`.`OrderStatus` AS `OrderStatus`,`od`.`GoodsID` AS `GoodsID`,`od`.`GoodsName` AS `GoodsName` from (`order` `o` join `orderdetail` `od` on((`o`.`OrderID` = `od`.`OrderID`))) where (`o`.`OrderStatus` <> 'Completed');
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- View structure for order_with_customer
|
|
|
-- ----------------------------
|
|
|
DROP VIEW IF EXISTS `order_with_customer`;
|
|
|
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `order_with_customer` AS select `o`.`OrderID` AS `OrderID`,`o`.`OrderDate` AS `OrderDate`,`o`.`CustomerID` AS `CustomerID`,`o`.`OrderStatus` AS `OrderStatus`,`o`.`customer_id` AS `customer_id`,`c`.`CustomerName` AS `CustomerName`,`c`.`CustomerAddress` AS `CustomerAddress` from (`order` `o` join `customer` `c` on((`o`.`CustomerID` = `c`.`CustomerID`)));
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- View structure for warehouse_outbound_total
|
|
|
-- ----------------------------
|
|
|
DROP VIEW IF EXISTS `warehouse_outbound_total`;
|
|
|
CREATE ALGORITHM = UNDEFINED SQL SECURITY DEFINER VIEW `warehouse_outbound_total` AS select `w`.`WarehouseID` AS `WarehouseID`,`w`.`WarehouseName` AS `WarehouseName`,sum(`orr`.`OutboundQuantity`) AS `TotalOutboundQuantity` from (`warehouse` `w` join `outboundrecord` `orr` on((`w`.`WarehouseID` = `orr`.`WarehouseID`))) group by `w`.`WarehouseID`,`w`.`WarehouseName`;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Procedure structure for CalculateWarehouseOutboundTotal
|
|
|
-- ----------------------------
|
|
|
DROP PROCEDURE IF EXISTS `CalculateWarehouseOutboundTotal`;
|
|
|
delimiter ;;
|
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `CalculateWarehouseOutboundTotal`(
|
|
|
IN p_WarehouseID VARCHAR(255),
|
|
|
OUT p_TotalOutbound INT
|
|
|
)
|
|
|
BEGIN
|
|
|
SELECT SUM(OutboundQuantity) INTO p_TotalOutbound
|
|
|
FROM outboundrecord
|
|
|
WHERE WarehouseID = p_WarehouseID;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Procedure structure for DeleteOrderAndOutbound
|
|
|
-- ----------------------------
|
|
|
DROP PROCEDURE IF EXISTS `DeleteOrderAndOutbound`;
|
|
|
delimiter ;;
|
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `DeleteOrderAndOutbound`(
|
|
|
IN p_OrderID INT
|
|
|
)
|
|
|
BEGIN
|
|
|
DELETE FROM outboundrecord WHERE OrderID = p_OrderID;
|
|
|
DELETE FROM `order` WHERE OrderID = p_OrderID;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Procedure structure for GetOutboundRecordsByDateRange
|
|
|
-- ----------------------------
|
|
|
DROP PROCEDURE IF EXISTS `GetOutboundRecordsByDateRange`;
|
|
|
delimiter ;;
|
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `GetOutboundRecordsByDateRange`(
|
|
|
IN p_StartDate DATE,
|
|
|
IN p_EndDate DATE
|
|
|
)
|
|
|
BEGIN
|
|
|
SELECT *
|
|
|
FROM outboundrecord
|
|
|
WHERE OutboundDate BETWEEN p_StartDate AND p_EndDate;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Procedure structure for InsertNewOrder
|
|
|
-- ----------------------------
|
|
|
DROP PROCEDURE IF EXISTS `InsertNewOrder`;
|
|
|
delimiter ;;
|
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertNewOrder`(
|
|
|
IN p_OrderDate DATE,
|
|
|
IN p_CustomerID INT,
|
|
|
IN p_OrderStatus VARCHAR(50)
|
|
|
)
|
|
|
BEGIN
|
|
|
INSERT INTO `order` (OrderDate, CustomerID, OrderStatus)
|
|
|
VALUES (p_OrderDate, p_CustomerID, p_OrderStatus);
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Procedure structure for InsertOutboundRecordAndUpdateStock
|
|
|
-- ----------------------------
|
|
|
DROP PROCEDURE IF EXISTS `InsertOutboundRecordAndUpdateStock`;
|
|
|
delimiter ;;
|
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `InsertOutboundRecordAndUpdateStock`(
|
|
|
IN p_GoodsID VARCHAR(255),
|
|
|
IN p_WarehouseID VARCHAR(255),
|
|
|
IN p_OutboundQuantity INT,
|
|
|
IN p_OutboundDate DATE,
|
|
|
IN p_OrderID INT,
|
|
|
IN p_EmployeeID INT
|
|
|
)
|
|
|
BEGIN
|
|
|
DECLARE current_stock INT;
|
|
|
SELECT StockQuantity INTO current_stock FROM goods WHERE GoodsID = p_GoodsID;
|
|
|
IF current_stock >= p_OutboundQuantity THEN
|
|
|
INSERT INTO outboundrecord (GoodsID, WarehouseID, OutboundQuantity, OutboundDate, OrderID, EmployeeID)
|
|
|
VALUES (p_GoodsID, p_WarehouseID, p_OutboundQuantity, p_OutboundDate, p_OrderID, p_EmployeeID);
|
|
|
UPDATE goods
|
|
|
SET StockQuantity = StockQuantity - p_OutboundQuantity
|
|
|
WHERE GoodsID = p_GoodsID;
|
|
|
ELSE
|
|
|
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Insufficient stock for the outbound operation.';
|
|
|
END IF;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Procedure structure for UpdateOrderStatus
|
|
|
-- ----------------------------
|
|
|
DROP PROCEDURE IF EXISTS `UpdateOrderStatus`;
|
|
|
delimiter ;;
|
|
|
CREATE DEFINER=`root`@`localhost` PROCEDURE `UpdateOrderStatus`(
|
|
|
IN p_OrderID INT,
|
|
|
IN p_NewStatus VARCHAR(50)
|
|
|
)
|
|
|
BEGIN
|
|
|
UPDATE `order`
|
|
|
SET OrderStatus = p_NewStatus
|
|
|
WHERE OrderID = p_OrderID;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Triggers structure for table employee
|
|
|
-- ----------------------------
|
|
|
DROP TRIGGER IF EXISTS `tr_before_update_employee`;
|
|
|
delimiter ;;
|
|
|
CREATE TRIGGER `tr_before_update_employee` BEFORE UPDATE ON `employee` FOR EACH ROW BEGIN
|
|
|
INSERT INTO employee_log (EmployeeID, OldEmployeeName, NewEmployeeName, OldEmployeePosition, NewEmployeePosition)
|
|
|
VALUES (OLD.EmployeeID, OLD.EmployeeName, NEW.EmployeeName, OLD.EmployeePosition, NEW.EmployeePosition);
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Triggers structure for table goods
|
|
|
-- ----------------------------
|
|
|
DROP TRIGGER IF EXISTS `tr_before_delete_goods`;
|
|
|
delimiter ;;
|
|
|
CREATE TRIGGER `tr_before_delete_goods` BEFORE DELETE ON `goods` FOR EACH ROW BEGIN
|
|
|
INSERT INTO deleted_goods (DeletedGoodsID, GoodsName)
|
|
|
VALUES (OLD.GoodsID, OLD.GoodsName);
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Triggers structure for table order
|
|
|
-- ----------------------------
|
|
|
DROP TRIGGER IF EXISTS `tr_before_insert_order`;
|
|
|
delimiter ;;
|
|
|
CREATE TRIGGER `tr_before_insert_order` BEFORE INSERT ON `order` FOR EACH ROW BEGIN
|
|
|
SET NEW.OrderDate = CURDATE();
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Triggers structure for table order
|
|
|
-- ----------------------------
|
|
|
DROP TRIGGER IF EXISTS `tr_after_update_order_status`;
|
|
|
delimiter ;;
|
|
|
CREATE TRIGGER `tr_after_update_order_status` AFTER UPDATE ON `order` FOR EACH ROW BEGIN
|
|
|
IF OLD.OrderStatus!= NEW.OrderStatus THEN
|
|
|
INSERT INTO order_log (OrderID, OldStatus, NewStatus)
|
|
|
VALUES (OLD.OrderID, OLD.OrderStatus, NEW.OrderStatus);
|
|
|
END IF;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Triggers structure for table outboundrecord
|
|
|
-- ----------------------------
|
|
|
DROP TRIGGER IF EXISTS `tr_after_insert_outboundrecord`;
|
|
|
delimiter ;;
|
|
|
CREATE TRIGGER `tr_after_insert_outboundrecord` AFTER INSERT ON `outboundrecord` FOR EACH ROW BEGIN
|
|
|
UPDATE goods
|
|
|
SET StockQuantity = StockQuantity - NEW.OutboundQuantity
|
|
|
WHERE GoodsID = NEW.GoodsID;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
-- ----------------------------
|
|
|
-- Triggers structure for table outboundrecord
|
|
|
-- ----------------------------
|
|
|
DROP TRIGGER IF EXISTS `tr_before_delete_outboundrecord`;
|
|
|
delimiter ;;
|
|
|
CREATE TRIGGER `tr_before_delete_outboundrecord` BEFORE DELETE ON `outboundrecord` FOR EACH ROW BEGIN
|
|
|
UPDATE goods
|
|
|
SET StockQuantity = StockQuantity + OLD.OutboundQuantity
|
|
|
WHERE GoodsID = OLD.GoodsID;
|
|
|
END
|
|
|
;;
|
|
|
delimiter ;
|
|
|
|
|
|
SET FOREIGN_KEY_CHECKS = 1;
|