我有两张表:countdown
和time_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)?
答案 0 :(得分: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;
答案 1 :(得分: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;
在SQL语句中使用magic_countdown
来插入数据而不是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