【问题标题】:MySql update a second tableb automatically when a record is inserted into tablea将记录插入表时,MySql 会自动更新第二个表
【发布时间】:2014-08-20 17:47:40
【问题描述】:

当将行插入tablea 时,如何使用tablea 中的值自动更新第二个表tableb,而不需要任何存储过程或其他东西。

例如,如果要在此处将一行插入 tablea,我想用 itemId 中的 tablea 更新 tableb 中的所有行,其中 itemTempId 中的 itemTempId tableb 是相同的作为tablea中的那个

两个表都是 MyIsam 类型

插入表格之前

tablea

"id"    "itemId"    "itemTempId"    "itemName"
-       -           -               -    
tableb    

"id"    "itemId"    "itemTempId"    "itemImageName"
"1"     \N          "T001"          "front.jpg"
"2"     \N          "T001"          "side-left.jpg"
"3"     \N          "T001"          "side-right.jpg"
"4"     \N          "T001"          "back.jpg"

插入tablea后

tablea

"id"    "itemId"    "itemTempId"    "itemName"
"1"     "US01"      "T001"          "Samsung Galaxy Note 5"    

tableb //updated with the itemId from tablea where itemTempId are the same  

"id"    "itemId"    "itemTempId"    "itemImageName"
"1"     "US01"      "T001"          "front.jpg"
"2"     "US01"      "T001"          "side-left.jpg"
"3"     "US01"      "T001"          "side-right.jpg"
"4"     "US01"      "T001"          "back.jpg"

【问题讨论】:

  • 如果不使用Trigger,我不知道你怎么能做到。
  • @Norman 你确定即使你不想使用任何触发器或任何 sql?
  • 如果表是 INNODB,这可能吗?有外键?
  • @prashantthakre 我目前用 php 和 sql 来做

标签: mysql sql


【解决方案1】:

在tablea 中插入一行后,您可以使用TRIGGER 更新tableb:

CREATE TRIGGER new_trigger 
AFTER INSERT ON tablea
FOR EACH ROW 
  UPDATE tableb SET itemId = NEW.itemID WHERE itemTempID = NEW.itemTempID;

我觉得没有TRIGGER你做不到,像这样,真的很简单。

【讨论】:

  • 我正在尝试这样的事情,但想知道为什么这不会更新第二个表update amga a, amgb b set a.itemId = a.id, b.itemId = a.itemId where a.itemId = 0 and a.itemTempId = 'T001';
  • “我正在尝试这样的事情”?这不是这样的,你没有创建触发器。您的查询不会针对tablea 上的每个insert 执行
  • 没有。我计划在 php 插入后使用 php 手动运行它。
  • 我不明白。您有权访问数据库创建吗?或者你所能做的就是插入它?
  • 我有权创建数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-21
  • 1970-01-01
  • 2015-04-07
  • 2014-11-26
  • 2021-03-31
相关资源
最近更新 更多