回覆列表
-
1 # 使用者3653102638543
-
2 # 使用者7266214309263
CREATE TRIGGER t_insert
AFTER INSERT
ON A
FOR EACH ROW
BEGIN
INSERT INTO B VALUES ( NEW.name )
END
CREATE TRIGGER t_update
AFTER UPDATE
ON A
FOR EACH ROW
BEGIN
UPDATE B SET B.NAME=NEW.NAME WHERE B.NAME=OLD.NAME
END
MySQL線上表修改操作是一個歷史問題了,再5.6和5.7上有非常多的改進,很多情況下都不用鎖表了。如果你實在不想升級MySQL到新版本的話,建議使用percona的工具集(MySQL Tools & Management Software to Perform System Tasks by Percona)中的線上表結構修改pt-online-schema-change,不鎖表來修改表結構。其實原理也很簡單,新建和原表表結構一模一樣的表A",對這個表進行表結構修改,然後把表結構變更期間對該表的insert,update,delete重新應用上去,最後兩個表A和A"對調。當然,就算你是線上表結構修改,還是建議你在業務低峰期修改,避免一些問題。淘寶因為發現了pt-online-schema-change的部分bug,維護了自己的一套線上表結構變更的工具,但是原理是完全一致的。