【问题标题】:MySQL stored procedure to turn inventory movement into inventoriesMySQL存储过程将库存移动转化为库存
【发布时间】:2013-03-14 01:47:02
【问题描述】:

让我们从这张表开始:

CREATE  TABLE IF NOT EXISTS `resourceMovement` (
  `resourceID` INT(4) UNSIGNED NOT NULL ,
  `movementDateTime` DATETIME NOT NULL ,
  `movementQuantity` INT(11) UNSIGNED NOT NULL ,
  `fromLocationID` INT(4) UNSIGNED NULL ,
  `fromIndividualID` INT(11) UNSIGNED NULL ,
  `fromDeptID` INT(4) UNSIGNED NULL ,
  `toLocationID` INT(4) UNSIGNED NULL ,
  `toIndividualID` INT(11) UNSIGNED NULL ,
  `toDeptID` INT(4) UNSIGNED NULL ,
  `lastUpdated` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ,
  PRIMARY KEY (`resourceID`, `movementDateTime`, `movementQuantity`) ,
  [ List of foreign key constraints. ]

这会随着时间的推移跟踪特定数量的特定资源 ID 如何从一个部门/位置/人员转移到另一个部门/位置/人员。

我想做的是创造一个……东西。循环遍历 toLocationID/toIndividualID/toDeptID 值并为与这些目的地关联的每个 resourceID 生成运行清单的过程或触发器或视图。

我什至在 MySQL 存储过程方面还不够好,无法有效地做到这一点。

我想我可以创建三个正在运行的库存表,一个用于部门、位置和人员,并有一个触发器来随着移动表的更新而更新这些表。常规表或临时表会更好吗?

而且细节问题不断出现。所以,我将只留下一般性问题:扫描审核库存移动的表以确定实际运行库存的最佳方法是什么?

谢谢!

【问题讨论】:

  • 你可以有部门、地点、人员表和所有这些表。:)
  • 我可以。创建表并不是困难的部分。创建触发器或存储过程是困难的部分...... :-) 我可以在 PHP 中执行此操作,但在 MySQL 中保留这些更新似乎更快。
  • 您不想为此使用临时表;它们仅对拥有的连接可见,并在该连接关闭时被删除,而这些数据可以由一系列连接共享。
  • 地点、个人、部门之间的关系是什么?
  • 不需要关系。个人上交一件经过审核的设备将生成一条记录 fromIndividualID -> toLocationID。从 Central Stores 到特定组的转移可能包含给定组的 toDeptGroupID、他们保存库存的位置的 toLocationID,以及签出该项目的人的 toIndividualID。

标签: mysql stored-procedures


【解决方案1】:

我过去曾实施过类似的系统。将它分成几张表似乎是最好的(对我来说)。

资源
- 资源 ID
- 资源描述
- 数量

变化
- 更改 ID
- 更改日期/时间戳
- 更改类型
- 资源 ID
- 目的地 ID
- 数量

目的地
- 目的地 ID
- 目的地类型

更改类型包括:
- 来自经销商的新库存
- 将某些部分分配给一个人/地点/事件
- 丢弃库存
- 保修更换
- 销售

目的地包括:
- 人/地点/事件 - (在你的情况下,它将是部门、人员和位置)

要了解您的库存量(总计):

从资源中选择

要找出给定的目的地有多少:

从资源中选择加入更改加入目的地标记

要查找给定项目的历史

从资源 = 的更改中选择

因此您不必运行持续更新..您只需跟踪更改..它以(合理)标准化的方式发生。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 2010-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多