最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

自动生成mysql触发器代码,实现数据同步_MySQL

来源:懂视网 责编:小采 时间:2020-11-09 18:06:15
文档

自动生成mysql触发器代码,实现数据同步_MySQL

自动生成mysql触发器代码,实现数据同步_MySQL:bitsCN.com 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。$dbname = test;//数据库$tab1 = user; //执行的表$tab2 = user_bak; //被触发的表$conn = mysql_conne
推荐度:
导读自动生成mysql触发器代码,实现数据同步_MySQL:bitsCN.com 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。$dbname = test;//数据库$tab1 = user; //执行的表$tab2 = user_bak; //被触发的表$conn = mysql_conne

bitsCN.com

如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。
$dbname = test;//数据库
$tab1 = user; //执行的表
$tab2 = user_bak; //被触发的表
$conn = mysql_connect("localhost","root", "root",$dbname) or die("请检查你的主机名数据库用户名和密码");
mysql_select_db($dbname, $conn) or die("数据库还没有连接");
$query = mysql_query("SHOW COLUMNS FROM $tab1");mysql_query("");
while($row=mysql_fetch_array($query,MYSQL_NUM)){//得到表的字段数组
$temp[] = $row[0];
$str1 .= `.$row[0].`,;
$str2 .= new..$row[0].,;
$str3 .= $row[0].=new..$row[0].,;
}
//insert触发器
$inser_str = "

{$tab1}表的insert触发器

";
$inser_str .= "create trigger ".$tab1."_insert
AFTER INSERT
on ".$tab1."
";
$inser_str .="for each row
INSERT INTO {$tab2} (".rtrim($str1,,).) VALUES (.rtrim($str2,,).);;
//update触发器
$update_str = "

{$tab1}表的update触发器

";
$update_str .= "create trigger ".$tab1."_update
";
$update_str .= "after update
";
$update_str .= "on ".$tab1.
;
$update_str .= "for each row
";
$update_str .= "update ".$tab2." set ".rtrim($str3,,)." where id = new.id;//这里的where id = new.id要手动改一下。改成主键的字段名";
//delete触发器
$delete_str = "

{$tab1}表的delete触发器

";
$delete_str .= "create trigger ".$tab1."_delete
";
$delete_str .= "after delete
";
$delete_str .= "on ".$tab1."
";
$delete_str .= "for each row
";
$delete_str .= "delete from ".$tab2." where id=OLD.id//这里的where id = new.id要手动改一下。改成主键的字段名
";
echo $inser_str;
echo $update_str;
echo $delete_str;
echo

注意:
1.触发器可用于InnoDB或MyISAM类型的表
2.插入的时候用AFTER INSERT 更好的保证数据ID的对应,如果用before INSERT有可能造成ID不对应
3.如new.id则是表示主表中的字段
4.sql语句太多,用 begin..end
5.使用show triggers语句查看数据库中的触发器。
6.删除触发器DROP TRIGGER IF EXISTS `test`
7.作者:华夏之星;
echo <<

语法:


create trigger <触发器名称>

{ before | after}

{insert | update | delete}

on <表名>

for each row

<触发器SQL语句>

参数详解如下:

create trigger <触发器名称>:创建一个新触发器,并指定触发器的名称。

{ before | after}:用于指定在insert、update或delete语句执行前触发还是在语句执行后触发。

on <表名>:用于指定响应该触发器的表名。

for each row:触发器的执行间隔,for each row 通知触发器每隔一行执行一次动作,而不是对整个表执行一次。

<触发器SQL语句>:触发器要执行的SQL语句,如果该触发器要执行多条SQL语句,要将多条语句放在begin…end块中。

如:begin…end块(它不能上phpadmin上运行。因为phpmyadmin没有对begin...end解析。)

mysql_query("

create trigger user_delete

after delete

on user

for each row BEGIN

delete from user_bak where id=OLD.id;

delete from aaa where id=OLD.id;

END;");



EOT;
?>
PHP与MYSQL的触发器

bitsCN.com

文档

自动生成mysql触发器代码,实现数据同步_MySQL

自动生成mysql触发器代码,实现数据同步_MySQL:bitsCN.com 如果公司里有上百个表要做触发器,如果手动写代码的话。很累,所以今天写了一个小程序,自动生成mysql的触发代码。$dbname = test;//数据库$tab1 = user; //执行的表$tab2 = user_bak; //被触发的表$conn = mysql_conne
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top