Mysql SQL:更新不包含';不影响行上的时间戳

Mysql SQL:更新不包含';不影响行上的时间戳,mysql,sql,sql-update,row,Mysql,Sql,Sql Update,Row,下面有一些SQL代码,它使我能够更改“0”数量的所有实例,并仅在“数量”列中将它们更改为“1”。它工作正常,但是 然而,我试图做的是不影响受影响行上的timestamp列(称为'entry_date'),即保留输入的原始时间。当我运行此查询时,它会将最初创建条目的时间替换为运行以下查询的时间 我该怎么做?我有基本的PHP中级知识,但我的SQL知识不是很好。任何帮助都将不胜感激 更新databasenametablenameSETquantity=“1” 其中tablenamequantity='

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

然而,我试图做的是不影响受影响行上的timestamp列(称为'entry_date'),即保留输入的原始时间。当我运行此查询时,它会将最初创建条目的时间替换为运行以下查询的时间

我该怎么做?我有基本的PHP中级知识,但我的SQL知识不是很好。任何帮助都将不胜感激

更新
databasename
tablename
SET
quantity
=“1”
其中
tablename
quantity
='0'


首先,
描述tablename
,并注意“entry\u date”有额外信息“关于更新当前时间戳”。这就是你想要避免的行为

接下来,
ALTER TABLE tablename MODIFY COLUMN entry_date TIMESTAMP[NULL | NOT NULL]默认当前_TIMESTAMP

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


最后,
再次描述tablename
,注意额外的信息不见了。

您可以尝试以下方法:

UPDATE databasename.tablename SET quantity = '1', entry_date = entry_date
WHERE tablename.quantity = '0';
updatedatabasename.tablename集合数量='1',条目\日期=条目\日期
其中tablename.quantity='0';

并查看当您希望时间戳字段
条目\u日期
在更新时不自动更改时,它是否覆盖更新当前时间戳时
指定的行为。。在对表执行任何更新查询之前,需要执行以下查询

ALTER TABLE `tableName` CHANGE `entry_date` `entry_date` TIMESTAMP NOT NULL
 DEFAULT CURRENT_TIMESTAMP 
ALTER TABLE `tableName` CHANGE `entry_date` `entry_date` TIMESTAMP ON UPDATE
 CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP 
相反:如果您再次希望在更新时自动更改时间戳字段
entry\u date
,则在此之后。。在对表执行任何更新查询之前,需要执行以下查询

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

(并在
MODIFY列
子句中添加
NULL
notnull
,以保持列的可空性)。