0

行が作成された日付を格納するための列がありますdate_created。 しかし、行にを適用するたびに、その列にデータを適用していなくても、 も更新されます。current_time_stamp
UPDATEdate_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

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 に答える
2

テーブルが作成されたときに、自動更新のためにフィールドが初期化されたように聞こえます。次のようなもの。

CREATE TABLE templates (
   date_created TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
   ...
);
于 2013-08-17T01:35:09.670 に答える
0

テーブルの作成には、次の構成を使用します。デフォルトが指定されていない場合、タイムスタンプは任意の列の更新に対しても更新されます。

CREATE TABLE t1 (
  ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

詳細はこちら

于 2013-08-17T01:36:37.383 に答える
0

タイプ current_timestamp の列は、行に正常な更新を適用するたびに自動的に更新されます。

date_created の名前を date_updated に変更し、int 型 (作成時に time() によって生成された UNIX タイムスタンプを php に格納するため) または datetime/date/time 型のいずれかで新しい列を作成することをお勧めします。

于 2013-08-17T01:34:22.390 に答える