我正在node.js中创建一个使用MySQL作为数据库的库存管理应用程序。我有一个弱实体“rental_item”,用于保存特定租赁中的项目。问题是租赁可能不会一次全部返回,因此我需要一种方法,仅当所有“item_returned”实体为真时,才将租赁表中的布尔值“rental_returned”标记为真。
下面是我的表结构:
CREATE TABLE `rental` (
`rental_id` int NOT NULL AUTO_INCREMENT,
`renter_id` int NOT NULL,
`date_in` date NOT NULL,
`date_out` date NOT NULL,
`sig_path` varchar(50) NOT NULL,
`doc_path` varchar(50) NOT NULL,
`col_name` varchar(50) NOT NULL,
`col_path` varchar(50) NOT NULL,
`cost` decimal(15,2) NOT NULL,
`rental_returned` tinyint(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`rental_id`),
UNIQUE KEY `doc_path` (`doc_path`),
UNIQUE KEY `col_path` (`col_path`),
UNIQUE KEY `sig_path` (`sig_path`),
KEY `renter_key` (`renter_id`),
CONSTRAINT `renter_key` FOREIGN KEY (`renter_id`) REFERENCES `renter` (`renter_id`)
)
CREATE TABLE `rental_item` (
`rental_id` int NOT NULL,
`i_ID` varchar(20) NOT NULL,
`item_returned` tinyint(1) NOT NULL DEFAULT '0',
KEY `rental_key` (`rental_id`),
KEY `rental_item_key` (`i_ID`),
CONSTRAINT `rental_item_key` FOREIGN KEY (`i_ID`) REFERENCES `item` (`i_ID`),
CONSTRAINT `rental_key` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE CASCADE
)
我现在通过mysql 2 node.js模块来做这个,只是检查一个给定的rental_id的所有值。然后我发现了一些触发器,认为这个方法可能会更好。我摆弄了一些像这样的东西,比如带表连接的触发器,但是我无法理解如何获得从rental_item更新的条目的rental_id。然后检查具有该ID的租赁项目中的所有项目是否具有返回的项目= 1,最后更新租赁表以显示所有项目/完整的租赁已经被返回。
我知道这应该是一个更新后的租金项目触发器,但不知道如何处理所需的条件或循环。
1条答案
按热度按时间g52tjvyc1#
使用
NEW.rental_id
获取已更新行的ID。