【发布时间】:2020-09-07 20:43:42
【问题描述】:
我有两张桌子;
tbl_ride
+---------+--------------+----------+
| rideID | rideName | duration |
+---------+--------------+----------+
| 1 | NY Tour | 3 |
| 2 | Night Life | 2 |
+---------+--------------+----------+
tbl_day
+------------+-----------+----------+
| dayID | rideID | routeMap |
+---------+--------------+----------+
| 1 | 1 | A-B |
| 2 | 1 | B-C |
| 3 | 1 | C-D |
| 4 | 2 | A-B |
| 5 | 2 | B-C |
+---------+--------------+----------+
所以我需要能够根据tbl_ride.duration 限制记录到tbl_day 的记录数。这可以通过 SQL 来实现还是应该通过代码来实现?无论哪种方式,我都将不胜感激。
以下是我当前用于 JDBC 的 MySQL 代码:
INSERT INTO `tbl_tour_day` (`tourID`, `startHotel`, `endHotel`, `routeNote`, `routeMap`)
VALUES ( (SELECT tourID from tbl_tour_ride where tbl_tour_ride.tourID = ?), ?, ?, ?, ?)
【问题讨论】:
-
所以你每天只能有8个ride_id = 1个?
-
如果达到某些
rideID的tbl_ride.duration记录数量,则此rideID的下一条记录必须是:1) 忽略2) 弹出错误3) 插入而不是一些现有的(最古老的?)记录 4)别的东西。并显示 FULLtbl_day的 DDL。 -
@Akina 如果某些
rideID的`tbl_ride.duration value` 为2,那么用户应该只能在tbl_day中为外键rideID添加2 条记录。如果达到特定rideID的tbl_day的最大值,则会出现错误提示“已指定此行程的所有日期” -
@P.Salmon 您的问题不清楚。你能详细说明一下吗?
-
这可以使用 BEFORE INSERT 触发器轻松实现。