mysql - 在另一个表中插入或更新时增加/减少列

标签 mysql sql database database-design

所以考虑一下: 我有两张表,第一个是“机器”,第二个是“租赁”。我在机器中有一个名为“inRental”的 bool 列,当机器未租用时为 0,当机器租用时为 1。我在租赁中还有一个名为“完成”的 bool 列,当机器仍在租赁时为 0,当租赁完成时为 1(我不删除租赁条目,因为我想跟踪租赁历史记录)。所以我想要的是,当该机器的新租赁条目插入到“rentals”中时,将“machines.inRental”列增加或设置为 1。例如,当我创建新的租赁时,我会:

INSERT INTO rentals VALUES (0,:machineID,0) 

当这种情况发生时,我想:

UPDATE machines SET inRental=1 WHERE MachineID=:machineID

租赁完成后我想要类似的:

UPDATE rentals SET finished=1 WHERE MachineID=:machineID

UPDATE machines SET inRental=0 WHERE MachineID=:machineID

表格是这样的:

RentalID  MachineID    finished   ...
.....................................
1         5            1                 
2         6            1                   
3         7            0                      


MachineID  inRental   ...
.........................
5          0                             
6          0                               
7          1                                 

我猜这是通过触发器实现的,但是如何实现呢?我还听说触发器很糟糕,最好避免它们。有没有更好的办法?我知道,Rental 中的列可能看起来是多余的,我可以只进行连接,但我在子查询中与其他表一起使用很多次表“机器”,我发现必须在其中进行连接有点低效和困惑子查询,不是吗?

最佳答案

触发器的使用完全取决于您的要求,您也可以使用存储过程。引用:http://www.madeiradata.com/real-performance-impact-of-triggers/

关于mysql - 在另一个表中插入或更新时增加/减少列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37905895/

相关文章:

mysql - 想按时间增量从 mysql 表中获取行

php - 动态下拉菜单

php - 我无法获得完整的 slug/post 路线

python - 通过 dsn 错误的 ODBC 连接

java - 多次 SQL 查询后出现 NullPointerException

java - 上传真实服务器上的opencms项目

mysql - 函数有问题

database - 基于图形的数据库 (http ://neo4j. org/) 的用例是什么?

mysql - 如何通过mysql前端软件连接mysql数据库

php - 上传文件后更新数据库的问题