当前位置: 首页 > 知识库问答 >
问题:

是否在更新Table1字段时从Table2中插入Table3中的行?

公良文彬
2023-03-14

我有一个包含字段“stock_id”的Table1Stocks和包含为每个股票订购的产品的Table2Productsordered以及一个Table3Store,每次有人更新Table1Stocks并将字段“Status”更改为“Received”时,我需要将Table2Productsordered中的行插入到Table3Store,其中Table2Productsordered字段“id_stock”=Table1Stocks“stock_id”的行中,Table2Productsordered中的“id_stock”是一个引用Table1Stocks“stock_id”的外我怎么能这么做?

表1更新第二行状态的股票

表2ProductSorded

输出插入新行的Table3Store

共有1个答案

柴意智
2023-03-14

我认为MySQL不允许您为插入和更新定义一个触发器,所以这些触发器需要是单独的。语法如下所示:

CREATE TRIGGER trig_Table1Stocks_received_insert
    AFTER INSERT ON Table1Stocks
    FOR EACH ROW
BEGIN
    INSERT INTO Table3Store (Stocknum, ProductNum)
        SELECT p.id_stock, p.product_id
        FROM Table2Productsordered p
        WHERE NEW.stock_id = p.id_stock AND
              NEW.status = 'Received';
END;

update触发器类似:

CREATE TRIGGER trig_Table1Stocks_received_update
    AFTER UPDATE ON Table1Stocks
    FOR EACH ROW
BEGIN
    INSERT INTO Table3Store (Stocknum, ProductNum)
        SELECT p.id_stock, p.product_id
        FROM Table2Productsordered p
        WHERE NEW.stock_id = p.id_stock AND
              NEW.status = 'Received' AND
              OLD.status <> 'Received';
END;

这是一个dB<>小提琴。

 类似资料:
  • 问题内容: 好的,标题有点令人费解。这基本上是每组最大的n型问题,但是我一生都无法解决。 我有一张表,user_stats: 我想通过最新的日期戳获取每个id的统计信息。这是一张很大的表,在41m行附近。因此,我使用以下命令创建了一个user_id,last_date临时表: 问题在于datestamp不是唯一的,因为一天中可能会有1个以上的统计更新(本来应该是真实的时间戳,但是设计此日期的人还是

  • 这对于初始注入/bean构建非常有效。一些网络教程建议采用这种方法。 现在,我认为可以合理地假设配置值(如果存储在DB中)可能会在运行时发生变化。因此,每当管理员更改数据库配置值时,我就会触发CDI-Event。 问题:有什么方法可以将值重新注入到已经初始化的bean实例的字段中吗?还是注入总是只与实例创建相关? 然而,我想知道一个普遍的问题:是否有任何支持重新注射?或者如果不是,规范(CDI或J

  • 我想实现,让我们说温度单位转换器。我想使用AndroidMVVM和数据绑定来做到这一点,但我不知道如何。我有一个片段,它由三个编辑文本字段组成:摄氏度,华氏度,开尔文。更改其中之一后,其余部分应自动更新。在没有数据绑定的情况下,我将 TextWatcher 设置为每个字段,并在 onTextChanged 中执行所有验证和转换逻辑,并设置其他字段的值。在之前文本更改中,我删除了其他字段的侦听器,并

  • 问题内容: 我在做一个用用java Postgres的。有什么方法可以确定是插入行还是更新行? 问题答案: 您可以查看“系统”列来说明不同之处。在这种情况下,它用于插入的行。 这是建立在未记录的实现细节上的,该细节在将来的版本中可能会更改(即使可能性不大)。它适用于Postgres 9.5和9.6。 它的优点:您无需引入其他列。

  • 问题内容: 我是mysql的新手。我在将记录插入到table1中时遇到问题,如果它在table2中不存在。我有2个表table1和table2形式: 我试图仅在table2的“开始”和“停止”列中不存在值时才将值插入到table1的开始和停止字段值中。如果存在,我需要抛出一个错误。这些表没有主键外键关系。抱歉,我不知道正确的语法,但是我必须在mysql和PHP中执行类似的操作。 在插入到table

  • 这里一个非常常见的问题是如何执行upsert,MySQL称之为,标准支持将其作为操作的一部分。 鉴于PostgreSQL不直接支持它(在PG9.5之前),您如何做到这一点?考虑以下几点: 现在假设您要“upsert”元组,,那么新的表内容将是: 这就是人们在讨论时所谈论的。至关重要的是,在同一表上存在多个事务的情况下,任何方法都必须是安全的--要么使用显式锁定,要么以其他方式防止产生的竞争条件。