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。对不起,我说错了。