Mysql 在sql中查找触发器
我有一个SQL表,它显然在列上有触发器。当我做Mysql 在sql中查找触发器,mysql,sql,timestamp,Mysql,Sql,Timestamp,我有一个SQL表,它显然在列上有触发器。当我做DESC时,我得到 +-----------------+---------------+------+-----+----------------------+--------------------------------+ | Field | Type | Null | Key | Default | Extra | +------
DESC
时,我得到
+-----------------+---------------+------+-----+----------------------+--------------------------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+---------------+------+-----+----------------------+--------------------------------+
| id | bigint(20) | NO | PRI | NULL | auto_increment |
| processedAt | timestamp(6) | NO | | CURRENT_TIMESTAMP(6) | on update CURRENT_TIMESTAMP(6) |
我想在更新当前时间戳(6)时关闭
,然后在处理和更新完记录后再打开它。我是否可以这样做?在执行显示触发器时
,我得到空集
。是否有我可以调试/排除故障的方法?根据DESC
命令,可以假定此处没有触发器。表定义可能如下所示:
创建表tbl(
id bigint(20)非空自动增量主键,
processedAt时间戳(6)不为空
更新当前时间戳(6)时的默认当前时间戳(6)
);
要在更新时关闭,您需要更改列定义:
ALTER TABLE tbl MODIFY COLUMN processedAt timestamp(6) NOT NULL
DEFAULT CURRENT_TIMESTAMP(6);
回过头来
ALTER TABLE tbl MODIFY COLUMN processedAt timestamp(6) NOT NULL
DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6);
或者创建一个真正的更新触发器:
CREATE TRIGGER tbl__tr_update BEFORE UPDATE ON tbl
FOR EACH ROW SET NEW.processedAt = NOW();
Microsoft版本的sql中没有DESC命令。请标记正确的数据库引擎以获得更好的帮助。