mysql有触发器?解决这个问题应该怎么弄?

时间:2021-11-29 00:55:26
表一:
id textid title desc address
1    2     国家 中国  复兴路1号

表二:
id textid  title address
3    2      国家  复兴路1号


当表一textid有数据时,就同时触发表二相关字段

19 个解决方案

#1


mysql 版本为5.0.6

#2


当表一textid有数据时,就同时触发表二相关字段:举例说明你的要求

#3


引用 2 楼 WWWWA 的回复:
当表一textid有数据时,就同时触发表二相关字段:举例说明你的要求



其实我个人理解就是同步复制表一的textid title address三个字段到表二
表一: 
id textid title desc address 
1    2    国家   中国  复兴路1号 
2    33   国家2  日本  东京

表二: 
id textid  title address 
3    2      国家  复兴路1号 
4    33     国家2  东京

#4


在AFTER INSERT中:
insert into b2(textid,title,desc,address)
values (new.textid,new.title,new.desc,new.address)

#5


DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
   INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;

#6


引用 5 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;


首先谢谢,

但我刚试了一下运行提示:1458 incorrect routine name

#7


引用 4 楼 WWWWA 的回复:
在AFTER INSERT中: 
insert into b2(textid,title,desc,address) 
values (new.textid,new.title,new.desc,new.address)


这是要当插入b1是同时插入b2,不是只插入b2

b1
id textid title desc address 
1    2    国家  中国  复兴路1号 
2    33  国家2  日本  东京 

b2: 
id textid  title address 
3    2      国家  复兴路1号 
4    33    国家2  东京 

#8


这是要当插入b1是同时插入b2,不是只插入b2 

在插入触发器中写代码

#9


引用 8 楼 WWWWA 的回复:
这是要当插入b1是同时插入b2,不是只插入b2 

在插入触发器中写代码


触发器这样写?报错啊,是不是mysql5.0不支持解发器啊?


CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;

#10


什么错误信息?

#11


1458 incorrect routine name

#12


急,紧急求助

#13


id textid title desc address 
1    2    国家  中国  复兴路1号 
2    33  国家2  日本  东京 

表二: 
id ttid  title address 
3    2      国家  复兴路1号 
4    33    国家2  东京 

刚才有错误描述,textid 对应 ttid 其它不变

#14


引用 5 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;


楼上,你表名改了吗? 贴出你的SQL语句和整个报错信息。

#15


引用 14 楼 ACMAIN_CHM 的回复:
引用 5 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER | 

CREATE TRIGGER testref BEFORE INSERT ON table1 
  FOR EACH ROW BEGIN 
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address); 
  END; 


DELIMITER ; 
 

楼上,你表名改了吗? 贴出你的SQL语句和整个报错信息。


id textid title desc address 
1    2    国家  中国  复兴路1号 
2    33  国家2  日本  东京 

表二: 
id ttid  title address 
3    2      国家  复兴路1号 
4    33    国家2  东京 

textid 对应 ttid 

#16


DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(ttid ,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;


贴出你自己的SQL及错误信息。

#17


引用 16 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(ttid ,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;



贴出你自己的SQL及错误信息。



phpmyadmin运行:

错误
SQL 查询: 

DELIMITER;



MySQL 返回: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 1

#18


引用 16 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(ttid ,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;



贴出你自己的SQL及错误信息。



错误
SQL 查询: 

CREATE TRIGGER testref BEFORE INSERT ON t1
FOR EACH
ROW BEGIN 
INSERT INTO t2( ttid, title, address ) 
VALUES (

NEW.textid, NEW.title, NEW.address
);



MySQL 返回: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

#19


示例:
DELIMITER $$

DROP TRIGGER /*!50032 IF EXISTS */ `zz`.`ff`$$

CREATE
       TRIGGER `ff` AFTER INSERT ON `aa` 
    FOR EACH ROW BEGIN
begin
INSERT INTO table2(ttid,title,address) VALUES (NEW.textid,NEW.title,NEW.address); 
end;
    END;
$$

DELIMITER ;

#1


mysql 版本为5.0.6

#2


当表一textid有数据时,就同时触发表二相关字段:举例说明你的要求

#3


引用 2 楼 WWWWA 的回复:
当表一textid有数据时,就同时触发表二相关字段:举例说明你的要求



其实我个人理解就是同步复制表一的textid title address三个字段到表二
表一: 
id textid title desc address 
1    2    国家   中国  复兴路1号 
2    33   国家2  日本  东京

表二: 
id textid  title address 
3    2      国家  复兴路1号 
4    33     国家2  东京

#4


在AFTER INSERT中:
insert into b2(textid,title,desc,address)
values (new.textid,new.title,new.desc,new.address)

#5


DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
   INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;

#6


引用 5 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;


首先谢谢,

但我刚试了一下运行提示:1458 incorrect routine name

#7


引用 4 楼 WWWWA 的回复:
在AFTER INSERT中: 
insert into b2(textid,title,desc,address) 
values (new.textid,new.title,new.desc,new.address)


这是要当插入b1是同时插入b2,不是只插入b2

b1
id textid title desc address 
1    2    国家  中国  复兴路1号 
2    33  国家2  日本  东京 

b2: 
id textid  title address 
3    2      国家  复兴路1号 
4    33    国家2  东京 

#8


这是要当插入b1是同时插入b2,不是只插入b2 

在插入触发器中写代码

#9


引用 8 楼 WWWWA 的回复:
这是要当插入b1是同时插入b2,不是只插入b2 

在插入触发器中写代码


触发器这样写?报错啊,是不是mysql5.0不支持解发器啊?


CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;

#10


什么错误信息?

#11


1458 incorrect routine name

#12


急,紧急求助

#13


id textid title desc address 
1    2    国家  中国  复兴路1号 
2    33  国家2  日本  东京 

表二: 
id ttid  title address 
3    2      国家  复兴路1号 
4    33    国家2  东京 

刚才有错误描述,textid 对应 ttid 其它不变

#14


引用 5 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;


楼上,你表名改了吗? 贴出你的SQL语句和整个报错信息。

#15


引用 14 楼 ACMAIN_CHM 的回复:
引用 5 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER | 

CREATE TRIGGER testref BEFORE INSERT ON table1 
  FOR EACH ROW BEGIN 
      INSERT INTO table2(textid,title,address) VALUES (NEW.textid,NEW.title,NEW.address); 
  END; 


DELIMITER ; 
 

楼上,你表名改了吗? 贴出你的SQL语句和整个报错信息。


id textid title desc address 
1    2    国家  中国  复兴路1号 
2    33  国家2  日本  东京 

表二: 
id ttid  title address 
3    2      国家  复兴路1号 
4    33    国家2  东京 

textid 对应 ttid 

#16


DELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(ttid ,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;


贴出你自己的SQL及错误信息。

#17


引用 16 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(ttid ,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;



贴出你自己的SQL及错误信息。



phpmyadmin运行:

错误
SQL 查询: 

DELIMITER;



MySQL 返回: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER' at line 1

#18


引用 16 楼 ACMAIN_CHM 的回复:
SQL codeDELIMITER |

CREATE TRIGGER testref BEFORE INSERT ON table1
  FOR EACH ROW BEGIN
      INSERT INTO table2(ttid ,title,address) VALUES (NEW.textid,NEW.title,NEW.address);
  END;
|

DELIMITER ;



贴出你自己的SQL及错误信息。



错误
SQL 查询: 

CREATE TRIGGER testref BEFORE INSERT ON t1
FOR EACH
ROW BEGIN 
INSERT INTO t2( ttid, title, address ) 
VALUES (

NEW.textid, NEW.title, NEW.address
);



MySQL 返回: 

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3 

#19


示例:
DELIMITER $$

DROP TRIGGER /*!50032 IF EXISTS */ `zz`.`ff`$$

CREATE
       TRIGGER `ff` AFTER INSERT ON `aa` 
    FOR EACH ROW BEGIN
begin
INSERT INTO table2(ttid,title,address) VALUES (NEW.textid,NEW.title,NEW.address); 
end;
    END;
$$

DELIMITER ;

#20