0

我有两张桌子:countdowntime_limit

countdown:
    -------    ---------    ---------    -------
    cnt_id     tlimit_id    cnt_start    cnt_end
    -------    ---------    ---------    -------
    1          1            08:00:00     x
    2          3            09:00:00     y

time_limit
    ---------    ----------
    tlimit_id    tlimit_val
    ---------    ----------
    1            00:30:00
    2            01:00:00
    3            01:30:00

所以 x=08:30:00 和 y=10:30:00

我的问题是:有没有一种方法可以设置数据库表(没有 php 脚本),以便 cnt_end 的值始终为 (cnt_start) PLUS (tlimit_val) ?

4

2 回答 2

0

如果您要从数据库中获取值,那么您可以使用此查询

select countdown.cnt_id,countdown.tlimit_id,countdown.cnt_start,(countdown.cnt_start+time_limit.tlimit_val) AS cnt_end from countdown INNER JOIN  time_limit on countdown.tlimit_id = time_limit.tlimit_id;
于 2013-10-31T16:04:03.913 回答
0

正如 建议的那样Goat CO,您可以在表格顶部创建一个视图,countdown以在列中自动插入计算值cnt_end

CREATE VIEW magic_countdown AS
SELECT a.cnt_id, a.tlimit_id, a.cnt_start, a.cnt_start + b.tlimit_val AS cnt_end
FROM countdown a, time_limit b
WHERE a.tlimit_id = b.tlimit_id;

magic_countdown在您的 SQL 语句中使用来插入数据而不是countdown

另一种方法是使用触发器。

CREATE TRIGGER triggername AFTER INSERT (or UPDATE)
ON countdown
FOR EACH ROW
UPDATE countdown SET countdown.cnt_end=time_limit.tlimit_val+countdown.cnt_start WHERE countdown.tlimit_id = time_limit.tlimit_id

有关触发器,请参阅MySQL 文档

于 2013-10-31T16:13:28.680 回答