在插入时创建MySQL触发器

在插入时创建MySQL触发器,mysql,sql,Mysql,Sql,目前我有两张桌子 表1=myit\u表\u客户-此表包含客户名称、客户id、客户电子邮件 表2=myit\u表\u工作单-此表包含客户姓名、客户id、客户电子邮件、票号、时间、日期等 我当前的问题是,每当我创建工作订单时,它都会插入客户名称、客户电子邮件、时间、票号(自动递增)和日期,但它会为客户ID插入0 如果在数据库中插入new.email address=myit_table_customer中的电子邮件地址,我想创建一个触发器,然后从myit_table_customer中获取该客户的客

目前我有两张桌子

表1=myit\u表\u客户-此表包含客户名称、客户id、客户电子邮件

表2=myit\u表\u工作单-此表包含客户姓名、客户id、客户电子邮件、票号、时间、日期等

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

如果在数据库中插入new.email address=myit_table_customer中的电子邮件地址,我想创建一个触发器,然后从myit_table_customer中获取该客户的客户ID,并将其分配给myit_table_工单中的客户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。

您不能将数据写入同一个表。这是两个不同的表。从fthiella获得以下代码,但如果用户不存在,则会遇到问题。嗨,非常感谢!!我对它进行了修改,以使用我的表和列,它工作得非常好。在插入myit\u表\u工作\u订单之前,为每一行创建触发票据。设置NEW.CUSTOMER\u ID=从myit\u表\u CUSTOMER中选择CUSTOMER\u ID,其中CUSTOMER\u EMAIL=NEW.CUSTOMER\u EMAIL\u ADDRESS\u FROM\u EMAIL;再次感谢。脚本工作正常,但如果用户不存在,我会遇到错误,我希望它存储电子邮件,即使电子邮件或客户id不存在,并为该客户id分配0。下面是错误的屏幕截图。再次感谢。![在此输入图像描述][1][1]:i.stack.imgur.com/o3Wbt。png@user3303594在这种情况下,您可以使用COALESCE,请参见这里的fiddle,或者您可以在CUSTOMED_ID列中允许空数据