0

我在下面有一些 SQL 代码,它使我能够更改数量为“0”的所有实例,并仅在“数量”列中将它们更改为“1”。它工作正常,但...

但是,我想要做的不是影响受影响行上的时间戳列(称为“entry_date”),即。保留输入的原始时间。当我运行此查询时,它会将最初创建条目的时间替换为运行以下查询的时间。

我该如何解决这个问题?我有基本的中级 PHP 知识,但我的 SQL 知识不是很好。任何帮助,将不胜感激。

更新databasenametablename设置quantity= '1' 在
哪里tablenamequantity='0';

4

3 回答 3

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 回答
1

首先,DESCRIBE tablename注意“entry_date”具有“更新 CURRENT_TIMESTAMP”的额外信息。这是您要避免的行为。

下一个,ALTER TABLE tablename MODIFY COLUMN entry_date TIMESTAMP [NULL | NOT NULL] DEFAULT CURRENT_TIMESTAMP;

(您可以根据需要指定“NULL”或“NOT NULL”。)

最后,DESCRIBE tablename再次请注意,额外信息已消失。

于 2012-11-01T04:22:18.033 回答
0

When you want timestamp field entry_date to not change automatically on update.. you need following query to execute before any update query on your table

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

Opposite : After this if you again want timestamp field entry_date to change automatically on update.. you need following query to execute before any update query on your table

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