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