最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題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關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

自動(dòng)生成mysql觸發(fā)器代碼,實(shí)現(xiàn)數(shù)據(jù)同步_MySQL

來源:懂視網(wǎng) 責(zé)編:小采 時(shí)間:2020-11-09 18:06:15
文檔

自動(dòng)生成mysql觸發(fā)器代碼,實(shí)現(xiàn)數(shù)據(jù)同步_MySQL

自動(dòng)生成mysql觸發(fā)器代碼,實(shí)現(xiàn)數(shù)據(jù)同步_MySQL:bitsCN.com 如果公司里有上百個(gè)表要做觸發(fā)器,如果手動(dòng)寫代碼的話。很累,所以今天寫了一個(gè)小程序,自動(dòng)生成mysql的觸發(fā)代碼。$dbname = test;//數(shù)據(jù)庫$tab1 = user; //執(zhí)行的表$tab2 = user_bak; //被觸發(fā)的表$conn = mysql_conne
推薦度:
導(dǎo)讀自動(dòng)生成mysql觸發(fā)器代碼,實(shí)現(xiàn)數(shù)據(jù)同步_MySQL:bitsCN.com 如果公司里有上百個(gè)表要做觸發(fā)器,如果手動(dòng)寫代碼的話。很累,所以今天寫了一個(gè)小程序,自動(dòng)生成mysql的觸發(fā)代碼。$dbname = test;//數(shù)據(jù)庫$tab1 = user; //執(zhí)行的表$tab2 = user_bak; //被觸發(fā)的表$conn = mysql_conne

bitsCN.com

如果公司里有上百個(gè)表要做觸發(fā)器,如果手動(dòng)寫代碼的話。很累,所以今天寫了一個(gè)小程序,自動(dòng)生成mysql的觸發(fā)代碼。
$dbname = test;//數(shù)據(jù)庫
$tab1 = user; //執(zhí)行的表
$tab2 = user_bak; //被觸發(fā)的表
$conn = mysql_connect("localhost","root", "root",$dbname) or die("請檢查你的主機(jī)名數(shù)據(jù)庫用戶名和密碼");
mysql_select_db($dbname, $conn) or die("數(shù)據(jù)庫還沒有連接");
$query = mysql_query("SHOW COLUMNS FROM $tab1");mysql_query("");
while($row=mysql_fetch_array($query,MYSQL_NUM)){//得到表的字段數(shù)組
$temp[] = $row[0];
$str1 .= `.$row[0].`,;
$str2 .= new..$row[0].,;
$str3 .= $row[0].=new..$row[0].,;
}
//insert觸發(fā)器
$inser_str = "

{$tab1}表的insert觸發(fā)器

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

{$tab1}表的update觸發(fā)器

";
$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要手動(dòng)改一下。改成主鍵的字段名";
//delete觸發(fā)器
$delete_str = "

{$tab1}表的delete觸發(fā)器

";
$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要手動(dòng)改一下。改成主鍵的字段名
";
echo $inser_str;
echo $update_str;
echo $delete_str;
echo

注意:
1.觸發(fā)器可用于InnoDB或MyISAM類型的表
2.插入的時(shí)候用AFTER INSERT 更好的保證數(shù)據(jù)ID的對應(yīng),如果用before INSERT有可能造成ID不對應(yīng)
3.如new.id則是表示主表中的字段
4.sql語句太多,用 begin..end
5.使用show triggers語句查看數(shù)據(jù)庫中的觸發(fā)器。
6.刪除觸發(fā)器DROP TRIGGER IF EXISTS `test`
7.作者:華夏之星;
echo <<

語法:


create trigger <觸發(fā)器名稱>

{ before | after}

{insert | update | delete}

on <表名>

for each row

<觸發(fā)器SQL語句>

參數(shù)詳解如下:

create trigger <觸發(fā)器名稱>:創(chuàng)建一個(gè)新觸發(fā)器,并指定觸發(fā)器的名稱。

{ before | after}:用于指定在insert、update或delete語句執(zhí)行前觸發(fā)還是在語句執(zhí)行后觸發(fā)。

on <表名>:用于指定響應(yīng)該觸發(fā)器的表名。

for each row:觸發(fā)器的執(zhí)行間隔,for each row 通知觸發(fā)器每隔一行執(zhí)行一次動(dòng)作,而不是對整個(gè)表執(zhí)行一次。

<觸發(fā)器SQL語句>:觸發(fā)器要執(zhí)行的SQL語句,如果該觸發(fā)器要執(zhí)行多條SQL語句,要將多條語句放在begin…end塊中。

如:begin…end塊(它不能上phpadmin上運(yùn)行。因?yàn)閜hpmyadmin沒有對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的觸發(fā)器

bitsCN.com

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

自動(dòng)生成mysql觸發(fā)器代碼,實(shí)現(xiàn)數(shù)據(jù)同步_MySQL

自動(dòng)生成mysql觸發(fā)器代碼,實(shí)現(xiàn)數(shù)據(jù)同步_MySQL:bitsCN.com 如果公司里有上百個(gè)表要做觸發(fā)器,如果手動(dòng)寫代碼的話。很累,所以今天寫了一個(gè)小程序,自動(dòng)生成mysql的觸發(fā)代碼。$dbname = test;//數(shù)據(jù)庫$tab1 = user; //執(zhí)行的表$tab2 = user_bak; //被觸發(fā)的表$conn = mysql_conne
推薦度:
  • 熱門焦點(diǎn)

最新推薦

猜你喜歡

熱門推薦

專題
Top