互联网服务MySQL

假如MySQL改了字段,触发器能把修改的字段改成原字段吗?

例如:show create table t\G 1. row ** Table: tCreate Table: CREATE TABLE t ( id int(11) DEFAULT NULL, name varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4MariaDB [test]> alter table t change id...显示全部

例如:
show create table t\G
1. row **

   Table: t

Create Table: CREATE TABLE t (
id int(11) DEFAULT NULL,
name varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

MariaDB [test]> alter table t change id id int(20);
Query OK, 0 rows affected (0.29 sec)
Records: 0 Duplicates: 0 Warnings: 0

MariaDB [test]> show create table t\G
1. row **

   Table: t

Create Table: CREATE TABLE t (
id int(20) DEFAULT NULL,
name varchar(20) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)
怎么把int(20)自动改回来的int(11)?

收起
参与8

返回liucj2004的回答

liucj2004liucj2004其它undefined

MySQL trigger支持的事件只有 { INSERT | UPDATE | DELETE }。
所以无法监听alter table事件
如果要实现这样的功能,你可以进行监控binlog,或者用canal等去实时抽取binlog。自己手工做一个触发器。
但是不建议对alter table做触发内容,因为有的操作会锁表,造成主从延迟等。

农业其它 · 2018-03-14
浏览2426
twt运营 邀答

回答者

liucj2004 最近回答过的问题

回答状态

  • 发布时间:2018-03-14
  • 关注会员:2 人
  • 回答浏览:2426
  • X社区推广