MYSQL触发器基于if语句进行更新或插入

时间:2018-10-01 01:13:50

标签: mysql database triggers

我有两个表,tbl_stock和tbl_stockEntry,这两个表是相同的。

它们具有以下字段: 仓库 品种 品种 数量

当在tbl_stockEntry表中输入一个条目时,我希望它要么更新tbl_stock表中的匹配条目,要么在没有匹配条目的情况下创建一个新条目。

但是我需要它匹配三个领域,仓库,品种和品种。

这是我创建条目的触发器,但是如果找不到任何记录,我似乎无法使它插入记录。

package main

import (
    "encoding/binary"
    "fmt"
)

func main() {
    a := [...]int8{2, 3, 5, 7, 11} // Array
    s := []int64{2, 3, 5, 7, 11}   // Slice
    z := []int32{}                 // Even empty things

    fmt.Println(binary.Size(a)) // 5
    fmt.Println(binary.Size(s)) // 40
    fmt.Println(binary.Size(z)) // 0
}

我已经尝试过了,但是没有用:

BEGIN
  UPDATE tbl_stock
     SET quantity = quantity + NEW.quantity
   WHERE vegetableCultivar = NEW.vegetableCultivar
   AND warehouse = NEW.warehouse;
END

如果有人知道我将如何实现这一目标,我将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

好,这是可行的:

BEGIN
  UPDATE tbl_stock
     SET quantity = quantity + NEW.quantity
   WHERE vegetableCultivar = NEW.vegetableCultivar
   AND warehouse = NEW.warehouse;

    IF ROW_COUNT() = 0 THEN  
    INSERT INTO tbl_stock (warehouse, vegetableCultivar, vegetableVariety, quantity)
  values (NEW.warehouse, NEW.vegetableCultivar, NEW.vegetableVariety, NEW.quantity);
  end if;
END