MySQL插入和更新日期

g0czyy6m  于 2022-10-03  发布在  Mysql
关注(0)|答案(1)|浏览(170)

因此,我有一个名为Companies的表,我想为插入和更新时间添加2列。

我该怎么做呢?我不想在我的查询中添加插入和更新日期。这是我的CREATE语句

create table companies(
    name varchar(20),
    city char(10),
    numberofemployees int(10),
    averagesalary double

);
alter table companies add inserttime datetime, add updatedtime datetime, add id serial;

我需要INSERT查询如下所示:

insert into companies values ("company","bglr",30,400.00)

并需要输出为

name,city,numberofemployees,averagesalary,inserttime,updatetime
company blr 30 400.00 23:00:11 23:00:11
g6ll5ycj

g6ll5ycj1#

首先,您必须更改INSERT语句,因为值的数量与列数不匹配。幸运的是,您可以指定与给定值对应的列的子集:

INSERT INTO companies(name, city, numberofemployees, averagesalary)
     VALUES ('company', 'blgr', 30, 400.00);

由于您没有为插入时间和更新时间提供值,因此将对新记录使用缺省值。使用缺省值插入记录的另一种方法是输入DEFAULT关键字,而不是具体的值(有关详细信息,请参阅INSERT的文档)。

在您的例子中,缺省值应该是NULL,因为您没有定义其他任何内容。要修改列的DEFAULT值,可以修改其定义:

ALTER TABLE companies MODIFY COLUMN inserttime datetime DEFAULT CURRENT_TIMESTAMP;

这样,插入时间就被设置为新插入记录的当前时间。当然,您也可以在CREATE TABLE语句中或在添加列时使用DEFAULT子句。

接下来,我们来看看更新时间。通常,您希望将其自动更新为当前时间。这可以在MySQL中通过为缺省值指定ON UPDATE子句来实现(Automatic Initialization and Updating for TIMESTAMP and DATETIME中的详细信息:

ALTER TABLE companies MODIFY COLUMN 
            updatetime datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP;

从现在起,当插入新记录或更新现有记录时,更新时间将自动设置为当前时间。

有关MySQL中缺省值的更多信息,请参阅documentation

相关问题