2017-11-17 10 views
0

に1列から失敗した -コピータイムスタンプ値は、私がして形成された二つのタイムスタンプフィールドを持つテーブルを持っている別の

CREATE TABLE `test` 
(`id` INT NOT NULL AUTO_INCREMENT , 
`first_date` TIMESTAMP NULL , 
`second_date` TIMESTAMP on update CURRENT_TIMESTAMP() NULL , 
PRIMARY KEY (`id`)) ENGINE = InnoDB; 

私は

INSERT INTO `test` (`id`, `first_date`, `second_date`) 
VALUES (NULL, NULL, '2017-10-18 17:02:14'), (NULL, NULL, '2017-10-18 17:02:14'); 

を使用して2つの行を挿入さて、私は2番目をコピーする必要があります日付の値を最初の日付の列に追加しますが、更新クエリを試すと、日付の値が今日の日付に更新されます。

update test set first_date = second_date where id=<row_id> 

id | first_date   | second_date 
---------------------------------------------- 
3 | 2017-11-17 16:09:03 | 2017-11-17 16:09:29 --> This value was 
4 | NULL    | 2017-10-18 17:02:14  "2017-10-18 17:02:14" 
5 | NULL    | 2017-10-18 17:02:14  before the update query. 

どういうわけか、second_dateのon update CURRENT_TIMESTAMP()属性は、ここで問題を作成しています。既存の値second_dateに影響を与えずに、2番目の列の値をコピーするにはどうすればよいですか?

+0

私は属性を削除し、更新クエリを実行し、再び属性を再割り当てすることができます。進むべき他の方法はありますか? – jitendrapurohit

+0

idと第2の日付値を持つ別のテーブルを作成します。これを更新クエリの入力として使用します。しかし、2番目の日付は更新されます。 (または、テーブルを修正して一時的に更新条件を削除してください...私の好きな選択肢ではありません) –

+1

私は不思議ですが、どうして変わらないと思っていますか?それはアップデート*のために特別に設定されています!しかし、あなたがアップデートに 'second_date'を含めるだけであれば、必要なものを手に入れることができます。 https://www.db-fiddle.com/f/crg1DF4qn7wF5VKqu5Zy6R/0(これが標準的な動作であるかどうかわからない) – Yoshi

答えて

1

次のクエリはsecond_dateの既存の値に影響を与えることなく、2番目の列から値をコピーするのに役立つはずです。

UPDATE test SET first_date = second_date , second_date = second_date WHERE id=<row_id> 
関連する問題