MySQL-使用基于另一个表的值填充表字段
我有两张表:MySQL-使用基于另一个表的值填充表字段,mysql,sql,foreign-keys,relationship,Mysql,Sql,Foreign Keys,Relationship,我有两张表:倒计时和时限 countdown: ------- --------- --------- ------- cnt_id tlimit_id cnt_start cnt_end ------- --------- --------- ------- 1 1 08:00:00 x 2 3 09:00:00
倒计时
和时限
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)加上(tlimit_val)?如果从数据库中获取值,则可以使用此查询
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;
根据的建议,您可以在倒计时
表的顶部创建一个视图,以便在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
请参见您的意思是plus
tlimit_val
如果您想更新x/y,您可以使用一个视图,或者搜索“mysql update with join”,确认是否要添加cnt_start和tlimit_val,或者根据您的问题在求和后减去x和y的值。@SidM GoatCo是的,我的意思是plus。对不起,我说错了。