mssql中有觸發程序可以使用(當資料表A發生哪些變動時,連帶地會自動去進行資料表B的變動)
所以mysql應該也會有....
大概查了一下設定,除了在ndbcluster下有點奇特外,其他都正常
這邊主要是漫遊中心學校名稱變動的trigger
設定在NDB_23 radius.school的trigger,觸發動作為 After、Update
BEGIN
UPDATE `wordpress`.`unit`
SET `wordpress`.`unit`.`name`=new.`sname`
WHERE `wordpress`.`unit`.`schoolid`=new.`id`;
UPDATE `wordpress`.`roaming_count_copy`
SET `wordpress`.`roaming_count_copy`.`unitname`=new.`sname`
WHERE `wordpress`.`roaming_count_copy`.`schoolid`=new.`id`;
UPDATE `wordpress`.`roaming_success_count`
SET `wordpress`.`roaming_success_count`.`unitname`=new.`sname`
WHERE `wordpress`.`roaming_success_count`.`schoolid`=new.`id`;
END
設定在NDB_22 radius.school的trigger,觸發動作為 After、Update
BEGIN
UPDATE `radius`.`proxy`
SET `radius`.`proxy`.`unitname`=new.`sname`
WHERE `radius`.`proxy`.`schoolid`=new.`id`;
UPDATE `radius`.`radtest`
SET `radius`.`radtest`.`schoolname`=new.`sname`
WHERE `radius`.`radtest`.`schoolid`=new.`id`;
END
要說詭異的地方為原本都將trigger放到NDB_23中,在Navicat mysql軟體測試都正常會觸發
但是透過網頁進行的時候卻發生屬於ndbcluster架構的proxy、radtest不會被更新???????
查看了一下grants的權限也都正常啊.....
mysql> show grants for radius@192.168.55.31;
+-------------------------------------------------------------------------------------------------------------------+
| Grants for radius@192.168.55.31 |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'radius'@'192.168.55.31' IDENTIFIED BY PASSWORD '*2551450E5D464579317C5AF0F047F7B765A33754' |
| GRANT ALL PRIVILEGES ON `wordpress`.* TO 'radius'@'192.168.55.31' |
| GRANT ALL PRIVILEGES ON `radius`.* TO 'radius'@'192.168.55.31' |
+-------------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)
所以只好把這部分移到NDB_22去,就正常了....詭異...
trigger真的省掉很多網頁程式碼的篇幅...蠻讚的~
回覆刪除