mysql - 在插入时创建 MySQL 触发器

标签 mysql sql

目前我有 2 个表。

表 1 = myit_table_customer - 此表包含客户名称、客户 ID、客户电子邮件

表 2 = myit_table_work_order - 此表包含客户姓名、客户 ID、客户电子邮件、票号、时间、日期等...

我目前的问题是,每当我创建工作订单时,它都会插入客户姓名、客户电子邮件、时间、票号 - 自动递增和日期,但它会为客户 ID 插入 (0)。

我想创建一个触发器 IF 在数据库上插入 new.email 地址 = myit_table_customer 中的电子邮件地址,然后从 myit_table_customer 中获取该客户的客户 ID,并将其分配给 myit_table_work_order 中的 Customer_ID

这是我目前所拥有的:

CREATE TRIGGER tickets AFTER INSERT ON myit_table_work_order

FOR EACH ROW

  BEGIN

    IF CUSTOMER_ID IS NULL (SELECT CUSTOMER_ID FROM myit_table_customer WHERE CUSTOMER_ID = NEW.CUSTOMER_ID) THEN

      INSERT INTO myit_table_work_order (CUSTOMER_ID) VALUES (NEW.CUSTOMER_ID);

    END IF;

再次感谢。

最佳答案

如果我正确理解你的问题,我认为你需要这样的触发器:

CREATE TRIGGER tickets
BEFORE INSERT ON myit_table_work_order
FOR EACH ROW
  SET NEW.customer_id = (SELECT id
                         FROM myit_table_customer
                         WHERE email=NEW.email);

请参阅 fiddle here .

关于mysql - 在插入时创建 MySQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21739951/

相关文章:

php - 如何在 codeigniter View 页面中使用用户 ID 打印(获取)用户名

php - 对于大型 sql 数据库,我如何找到哪个表已更新或受网站操作影响

sql - 将批处理文件中的参数传递给 sqlplus 脚本

sql - 在 DateTime LastUpdated 列上使用 Html.hidden 进行版本跟踪时,MVC.NET 毫秒会丢失

sql - 如何从由 INSERT/UPDATE 规则(触发器)执行的函数返回记录?

sql - PhpStorm 无法解析多个数据库连接的列

php - 如何更喜欢前缀而不是一般的 "like"结果?

php - 在单个 MySQL 或 MariaDB 事务中可以使用多少查询

具有动态列名的 MySQL 查询

sql - 在选择的 CASE 中检查 NULL