【发布时间】:2014-12-10 10:50:28
【问题描述】:
我是编写 mysql 触发器的新手。
这里是创建sql语句
CREATE TABLE BRAND_PROFILE_MAPPING (
PROFILE_MAPPING_ID BIGINT(20) NOT NULL AUTO_INCREMENT,
DOTLOOP_PROFILE_ID BIGINT(20) NULL DEFAULT NULL,
BRAND_PROFILE_ID VARCHAR(255) NULL DEFAULT NULL,
PROFILE_TYPE VARCHAR(90) NULL DEFAULT NULL,
PROFILE_NAME VARCHAR(225) NULL DEFAULT NULL,
SOURCE VARCHAR(255) NULL DEFAULT NULL,
PROFILE_HASH VARCHAR(32) NULL DEFAULT NULL,
ENTERED_DATE DATETIME NULL DEFAULT NULL,
CHANGED_DATE DATETIME NULL DEFAULT NULL,
PRIMARY KEY (PROFILE_MAPPING_ID)
);
我根据上述结构创建了表。这里我有 2 个字段 ENTERED_DATE DATETIME CHANGED_DATE DATETIME , 日期列我想写触发器如果任何插入操作两个日期字段都应该插入如果有任何更新操作,更改日期字段应该被更新。 感谢您的帮助。提前致谢!
【问题讨论】:
-
可以分享
brand_profile_mapping_log这个表的表结构吗 -
为什么不使用插入语句作为
insert into brand_profile_mapping_log (PROFILE_MAPPING_ID BIGINT,DOTLOOP_PROFILE_ID BIGINT,BRAND_PROFILE_ID,PROFILE_TYPE,PROFILE_NAME,SOURCE,PROFILE_HASH)值(NEW.profile_mapping_id,...)` -
在您的创建表中使用
timestamp类型而不是datetimeENTERED_DATE DATETIME TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP您不需要此表的changed_date列。您不需要为此编写触发器 -
我们无法根据 prod 环境更改其数据类型
-
您在创建表吗?或者上面的创建查询已经存在
BRAND_PROFILE_MAPPING表?