【发布时间】: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。