关于#mysql#的问题:创建insert类型触发器

img

img

3、创建insert类型触发器tri_sale,当向销售表中插入一条销售信息时,自动减少商品表中商品的库存数量。
有点没看懂,什么叫向销售表中插入一条销售信息,是应该插入哪个字段吗,能看得出来是将两表连接然后写条件,就是不知道改怎么实现。

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7737051
  • 以下回答来自chatgpt:

    可以按照以下步骤来创建名为tri_sale的insert类型触发器,实现向销售表中插入一条销售信息时,自动减少商品表中商品的库存数量的功能:

    1. 首先确定销售表和商品表的列和数据类型,以便在触发器中使用。例如,销售表中一般会包括销售单号、销售日期、商品编号、销售数量、销售价格等列,商品表中一般会包括商品编号、商品名称、库存数量、进货价格等列。

    2. 在MySQL数据库中创建销售表和商品表,并在商品表中添加一列用于存储库存数量。

    例如,可以使用以下的SQL语句来创建表:

    CREATE TABLE sales (
      sale_id INT NOT NULL AUTO_INCREMENT, 
      sale_date DATE,
      product_id INT,
      quantity INT,
      price DECIMAL(8,2),
      PRIMARY KEY (sale_id)
    );
    
    CREATE TABLE products (
      product_id INT NOT NULL AUTO_INCREMENT,
      product_name VARCHAR(255),
      stock_qty INT,
      purchase_price DECIMAL(8,2),
      PRIMARY KEY (product_id)
    );
    
    1. 然后,根据表结构和业务逻辑,在MySQL数据库中创建一个名为tri_sale的insert类型触发器。

    例如,可以使用以下的SQL语句来创建触发器:

    CREATE TRIGGER tri_sale AFTER INSERT ON sales
    FOR EACH ROW BEGIN
      UPDATE products
      SET stock_qty = stock_qty - NEW.quantity
      WHERE product_id = NEW.product_id;
    END;
    

    该触发器指定在销售表中插入一条记录时,根据插入的记录内容自动更新商品表中对应商品的库存数量,即将库存数量减去销售的数量。

    1. 最后,通过插入一条记录到销售表中,来测试触发器是否生效。例如,可以使用以下的SQL语句来插入一条销售记录:
    INSERT INTO sales (sale_date, product_id, quantity, price)
    VALUES ('2021-06-01', 1, 2, 100.00);
    

    观察商品表中对应商品的库存数量是否减少了2个,以确认触发器是否生效。

    以上就是创建MySQL的insert类型触发器的具体步骤和示例代码。需要注意的是,在实际情况中需要根据具体的业务需求和表结构进行调整,例如可以添加更多的列来记录销售人员、销售地点、销售方式等信息,以实现更加灵活和完善的业务逻辑。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

向销售表中插入一条销售信息,插入的是完整的一行记录,包括id,gid,inum,sdate

CREATE TRIGGER tri_sale
AFTER INSERT ON sale
FOR EACH ROW
UPDATE goods
SET gnum = gnum - NEW.inum
WHERE gid = NEW.gid;