0

以下の SQL コードを使用すると、「0」の数量のすべてのインスタンスを変更し、「数量」列内でのみ「1」に変更できます。それは正常に動作しますが...

ただし、私がやろうとしているのは、影響を受ける行のタイムスタンプ列 (「entry_date」と呼ばれる) には影響しません。エントリが作成された元の時間を保持します。このクエリを実行すると、エントリが最初に作成された時刻が、以下のクエリが実行された時刻に置き換えられます。

どうすればこれを回避できますか? PHP の基礎から中級の知識はありますが、SQL の知識はあまりありません。どんな助けでも大歓迎です。

更新しdatabasenameます。tablenameSET quantity= '1'
WHERE tablename. quantity= '0';

4

3 に答える 3

1

まず、DESCRIBE tablename「entry_date」には「CURRENT_TIMESTAMP の更新に関する」追加情報があることに注意してください。それは避けたい行動です。

次、ALTER TABLE tablename MODIFY COLUMN entry_date TIMESTAMP [NULL | NOT NULL] DEFAULT CURRENT_TIMESTAMP;

(必要に応じて「NULL」または「NOT NULL」を指定します。)

最後に、 Extra info がなくなっているDESCRIBE tablenameことに注意してください。

于 2012-11-01T04:22:18.033 に答える
1

次のようなことを試すことができます:

UPDATE databasename.tablename SET quantity = '1', entry_date = entry_date
WHERE tablename.quantity = '0';

で指定された動作をオーバーライドしないかどうかを確認しますON UPDATE CURRENT_TIMESTAMP

于 2012-11-01T11:58:26.417 に答える
0

タイムスタンプフィールドが更新時にentry_date自動的に変更されないようにする場合..テーブルの更新クエリの前に次のクエリを実行する必要があります

ALTER TABLE `tableName` CHANGE `entry_date` `entry_date` TIMESTAMP NOT NULL
 DEFAULT CURRENT_TIMESTAMP 

反対:この後、タイムスタンプフィールドentry_dateを更新時に自動的に変更する場合は、テーブルの更新クエリの前に次のクエリを実行する必要があります

ALTER TABLE `tableName` CHANGE `entry_date` `entry_date` TIMESTAMP ON UPDATE
 CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
于 2012-11-01T13:02:29.537 に答える