0

我有一列date_createdoncurrent_time_stamp来存储该行的创建日期。
但是,每当我将 anUPDATE应用于该行时,date_created即使我没有将任何数据应用于该列,也会刷新。

我怎样才能防止这种情况?

这是我应用的代码UPDATE

$query = "UPDATE `templates` SET `categoria_id`='$categoria', `title`='$title', `image`='$image', `code`='$code', `date_updated`='".date('Y-m-d H:i:s')."' WHERE `id`='{$id}' LIMIT 1";
if(mysqli_query($connection, $query)) {
    echo "up_success";
}
else {
    echo "fail";
}
4

4 回答 4

2

听起来像是在创建表时初始化了字段以进行自动更新。类似于以下内容。

CREATE TABLE templates (
   date_created TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
   ...
);
于 2013-08-17T01:35:09.670 回答
2

使用 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 时,该列将当前时间戳作为其默认值,并自动更新为当前时间戳。

CREATE TABLE t1 (
   ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

既没有 DEFAULT CURRENT_TIMESTAMP 也没有 ON UPDATE CURRENT_TIMESTAMP,这与同时指定 DEFAULT CURRENT_TIMESTAMP 和 ON UPDATE CURRENT_TIMESTAMP 相同

CREATE TABLE t1 (
   ts TIMESTAMP
);

使用 DEFAULT 子句但没有 ON UPDATE CURRENT_TIMESTAMP 子句时,该列具有给定的默认值,并且不会自动更新为当前时间戳。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
于 2013-08-17T01:38:11.933 回答
0

每次对行应用成功更新时,类型为 current_timestamp 的列都会自动更新。

您最好将 date_created 重命名为 date_updated,并创建一个 int 类型的新列(在创建时将 time() 生成的 unix 时间戳存储在 php 中)或 datetime/date/time 类型之一。

于 2013-08-17T01:34:22.390 回答
0

对于表创建,请使用以下构造。如果未指定默认值,则时间戳也会更新以更新任何列。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

详情在这里

于 2013-08-17T01:36:37.383 回答