【问题标题】:Update mysql field value based on another field value根据另一个字段值更新 mysql 字段值
【发布时间】:2018-03-14 16:11:17
【问题描述】:

我有两个 MySQL 数据库,第一个有一个表 t1 有三个字段 id、t2id、f,第二个有表 t2 有两个字段 id、@ 987654328@ t1.t2id 应该与t2.id 具有相同的值,其中t1.f = t2.f,但是t2.id 的值每天都在变化。

我想要实现的是,每当t2.id 的值发生更改时,t1.t2id 的值也会随之更新,这可能使用过程吗?

还有其他建议吗?

【问题讨论】:

  • 您需要在表上的 INSERT 或 UPDATE 之后使用 Triggert2。

标签: mysql


【解决方案1】:

如评论所述,您可以使用TRIGGERs (docs)。

您可能需要两个触发器,一个在插入时触发,一个在更新时触发。

DELIMITER //
CREATE TRIGGER insert_t1 AFTER INSERT ON t2
   FOR EACH ROW
   BEGIN
       INSERT INTO t1
       (t2id, f)
       VALUES
       (NEW.id, NEW.f);
   END //

   CREATE TRIGGER insert_t1 AFTER UPDATE ON t2
   FOR EACH ROW
   BEGIN
       UPDATE t1
       SET 
           f = NEW.f
       WHERE 
           t2id = NEW.id;
   END //
DELIMITER ;

编辑: 要针对多个数据库进行调整,您需要对它们进行限定,假设用户对两个数据库都有权限(我假设它们在同一主机上)。

所以而不是:CREATE TRIGGER insert_t1 AFTER INSERT ON t2.... 你会做CREATE TRIGGER db1.insert_t1 AFTER INSERT ON db2.t2...

【讨论】:

  • 感谢您的回答,但正如我在问题中提到的,这两个表与两个不同的数据库相关,所以触发器在这种情况下是否有效?
  • 更新了我的答案,MySQL 似乎支持限定条件:stackoverflow.com/questions/1832759/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-30
相关资源
最近更新 更多