-- ============================================ -- 拆分库存表为产品表和库存表 -- ============================================ -- 说明:将 lq_inventory 表拆分为 lq_product(产品表)和 lq_inventory(库存表) -- -- 注意:此脚本只创建新表,不迁移数据 -- ============================================ -- ============================================ -- 1. 创建产品表(lq_product) -- ============================================ CREATE TABLE IF NOT EXISTS `lq_product` ( `F_Id` VARCHAR(50) NOT NULL COMMENT '产品ID', `F_ProductName` VARCHAR(200) NULL COMMENT '产品名称', `F_Price` DECIMAL(18,2) NULL DEFAULT 0 COMMENT '价格', `F_ProductCategory` VARCHAR(50) NULL COMMENT '产品类别', `F_DepartmentId` VARCHAR(50) NULL COMMENT '归属部门ID', `F_StandardUnit` VARCHAR(20) NULL COMMENT '标准单位', `F_OnShelfStatus` INT NULL DEFAULT 1 COMMENT '上架状态(1:上架 0:下架)', `F_StatisticsCategory` VARCHAR(50) NULL COMMENT '统计分类', `F_Warehouse` VARCHAR(100) NULL COMMENT '归属仓库', `F_UnitConversion` VARCHAR(200) NULL COMMENT '单位换算', `F_SupplierName` VARCHAR(200) NULL COMMENT '供应商名称', `F_ContractSignDate` DATETIME NULL COMMENT '合同签订日期', `F_ContractEndDate` DATETIME NULL COMMENT '合同结束日期', `F_Remark` VARCHAR(1000) NULL COMMENT '备注', `F_CreateUser` VARCHAR(50) NULL COMMENT '创建人ID', `F_CreateTime` DATETIME NULL COMMENT '创建时间', `F_UpdateUser` VARCHAR(50) NULL COMMENT '更新人ID', `F_UpdateTime` DATETIME NULL COMMENT '更新时间', PRIMARY KEY (`F_Id`), INDEX `idx_product_category` (`F_ProductCategory`) COMMENT '产品类别索引', INDEX `idx_department` (`F_DepartmentId`) COMMENT '部门索引', INDEX `idx_onshelf_status` (`F_OnShelfStatus`) COMMENT '上架状态索引' ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='产品表'; -- ============================================ -- 2. 修改库存表结构(lq_inventory) -- ============================================ -- 注意:MySQL不支持 IF NOT EXISTS 语法,需要先检查字段是否存在 -- 如果字段已存在,执行对应的ALTER语句会报错,可以忽略 -- 2.1 添加产品ID字段 -- 如果字段已存在,会报错,可以忽略 ALTER TABLE `lq_inventory` ADD COLUMN `F_ProductId` VARCHAR(50) NULL COMMENT '产品ID(关联产品表)' AFTER `F_Id`; -- 2.2 添加新字段 -- 如果字段已存在,会报错,可以忽略 ALTER TABLE `lq_inventory` ADD COLUMN `F_StockInTime` DATETIME NULL COMMENT '入库时间' AFTER `F_Quantity`; ALTER TABLE `lq_inventory` ADD COLUMN `F_ProductionDate` DATETIME NULL COMMENT '生产日期' AFTER `F_StockInTime`; ALTER TABLE `lq_inventory` ADD COLUMN `F_ShelfLife` INT NULL COMMENT '保质期(天数)' AFTER `F_ProductionDate`; ALTER TABLE `lq_inventory` ADD COLUMN `F_BatchNumber` VARCHAR(100) NULL COMMENT '批次号' AFTER `F_ShelfLife`; -- 2.3 删除产品相关字段(可选,执行前请先备份数据) -- 注意:如果字段不存在,会报错,可以忽略 -- ALTER TABLE `lq_inventory` DROP COLUMN `F_ProductName`; -- ALTER TABLE `lq_inventory` DROP COLUMN `F_Price`; -- ALTER TABLE `lq_inventory` DROP COLUMN `F_ProductCategory`; -- ALTER TABLE `lq_inventory` DROP COLUMN `F_DepartmentId`; -- ALTER TABLE `lq_inventory` DROP COLUMN `F_StandardUnit`; -- 2.4 添加产品ID索引 -- 如果索引已存在,会报错,可以忽略 ALTER TABLE `lq_inventory` ADD INDEX `idx_product_id` (`F_ProductId`) COMMENT '产品ID索引'; -- ============================================ -- 注意事项 -- ============================================ -- 1. 此脚本只创建新表,不迁移数据 -- 2. 如果需要删除旧字段,请先备份数据 -- 3. 建议在测试环境先验证 -- 4. 执行ALTER语句前,请确认表结构