星空2020 2023-03-25 14:29 采纳率: 64.1%
浏览 12
已结题

mysql触发器在insert table_A时同时新增到tabl_B

mysql触发器在insert table_A时,在table_A字段name统计数量等于2时同时新增一条数据到tabl_B,否则不触发。
该如何修改?


```sql
//table_A统计name值:
 SELECT COUNT(NAME)AS qty FROM 
(SELECT
    ID,NAME,ADDTIME,
    (
    CASE WHEN date_format(ADDTIME,'%H:%I:%S') BETWEEN '00:00:00' AND '08:30:59'  THEN (DATE_FORMAT(DATE_SUB(ADDTIME,INTERVAL 1 DAY),'%Y-%m-%d N'))
    WHEN date_format(ADDTIME,'%H:%I:%S') BETWEEN '20:30:59' AND '23:59:59'  THEN (DATE_FORMAT(DATE_SUB(ADDTIME,INTERVAL 0 DAY),'%Y-%m-%d N'))
        ELSE date_format(ADDTIME,'%Y-%m-%d D') END) AS NEWADDTIME
FROM table_A WHERE STATUS='2')TB
 WHERE  NAME='张三' AND (NEWADDTIME = date_format(now(),'%Y-%m-%d D') OR NEWADDTIME = date_format(now(),'%Y-%m-%d N'))  //张三 为insert table_A时的值

//触发器 如何写条件,当table_A统计值大于2时,触发将
CREATE TRIGGER insert_sample
AFTER INSERT
ON table_A FOR EACH ROW
BEGIN
   ???//如何写条件;
insert into table_B(name,age,qty) valuesnew.name,new.age,统计数)
END


  • 写回答

1条回答 默认 最新

  • IT_service_mesh 2023-03-25 14:34
    关注

    参考GPT和自己的思路:您可以在触发器中使用IF语句来实现在insert table_A时同时新增到table_B的功能。以下是修改后的代码示例:

    CREATE TRIGGER insert_sample
    AFTER INSERT
    ON table_A FOR EACH ROW
    BEGIN
       DECLARE qty INT;
       SELECT COUNT(*) INTO qty FROM table_A WHERE name = NEW.name;
       IF qty = 2 THEN
          INSERT INTO table_B (name, age, qty)
          VALUES (NEW.name, NEW.age, qty);
       END IF;
    END
    

    在这个触发器中,我们首先声明一个变量qty来存储统计出来的name数量。然后我们使用SELECT COUNT(*)语句,来查询表table_A中name字段等于插入值NEW.name的数量,并赋值给qty变量。接着,我们使用IF语句来判断qty是否等于2,如果是,则插入一条新纪录到table_B中,同时将NEW.name,NEW.age和qty作为值插入相应的字段中。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月4日
  • 已采纳回答 3月27日
  • 创建了问题 3月25日

悬赏问题

  • ¥15 关于#java#的问题:找一份能快速看完mooc视频的代码
  • ¥15 这种微信登录授权 谁可以做啊
  • ¥15 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!