自动更新行列值

时间:2016-02-15 18:07:29

标签: mysql

我是否还要构建 MySQL 表,以便在行插入时自动设置created_date并在行更新时更新last_edit?

CREATE TABLE `tbldistrict` (
    `distid` INT(11) NOT NULL AUTO_INCREMENT,
    `district` VARCHAR(50) NOT NULL,
    `coid` INT(11) NOT NULL,
    `created_by` INT(11) NOT NULL,
    `created_date` DATETIME "ON INSERT... Current datetime,
    `edited_by` INT(11) NOT NULL,
    `last_edit` DATETIME "ON UPDATE... Current datetime ,
    `status` INT(5) NOT NULL,
    PRIMARY KEY (`distid`)
)

2 个答案:

答案 0 :(得分:1)

您可以定义具有DEFAULT值的列,对于更新列,您可以将其设置为自动更新:

created_date DATETIME DEFAULT CURRENT_TIMESTAMP

last_edit DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

只要至少有一列更改了行中的值,就会设置更新列。如果更新发生但没有列实际更改值,则不会更新。

答案 1 :(得分:0)

只需使用:

create_date datetime default CURRENT_TIMESTAMP

documentation

中所述

这仅适用于更新版本的MySQL。