我有一个date_created
列current_time_stamp
,用于存储创建行的日期
但每当我将UPDATE
应用于该行时,即使我没有将任何数据应用于该列,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";
}
答案 0 :(得分:2)
听起来像创建表时,字段已初始化以进行自动更新。如下所示。
CREATE TABLE templates (
date_created TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
...
);
答案 1 :(得分: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
);
答案 2 :(得分:0)
每次将成功更新应用于行时,类型为current_timestamp的列都会自动更新。
最好将date_created重命名为date_updated,并创建一个类型为int的新列(用于在创建时存储php中time()生成的unix时间戳)或其中一个日期时间/日期/时间类型。
答案 3 :(得分:0)
对于表创建,请使用以下构造。如果未指定默认值,则更新时间戳以更新任何列。
CREATE TABLE t1 (
ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
详情here