不删除MySQL表的情况下更新条件

22
我有一个MySQL的表格和其中的数据条目:
CREATE TABLE    `invoices`.`invoices` (
    `InvoiceID` bigint(20) unsigned NOT NULL auto_increment,
    `UserID` int(10) unsigned NOT NULL,
    `Value` decimal(10,3) NOT NULL,
    `Description` varchar(4048) NOT NULL,
    `DateTime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
    PRIMARY KEY    (`InvoiceID`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=latin5;

我想要移除 "on update CURRENT_TIMESTAMP" 的条件。我该如何修改这个表格?

4个回答

53
ALTER TABLE `invoices`.`invoices`
    CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

我只想删除更新条件。因为我不希望在记录更新时更新DateTime。 - HasanG
我已经编辑过了,现在它应该在新插入时默认为 CURRENT_TIMESTAMP,但在更新时保持不变。 - aularon
1
如果你想在插入时移除CURRENT_TIMESTAMP设置,使用上述查询,但将CURRENT_TIMESTAMP替换为"0000-00-00 00:00:00"(包括引号)。 - Pim
这对我有用: alter table tmpx change ts ts TIMESTAMP NOT NULL DEFAULT 0; CREATE TABLE tmpx ( ts timestamp NOT NULL DEFAULT '0000-00-00 00:00:00', id int(11) NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ) ; insert into tmpx values(null, null); - almaruf

8

aularon的答案不会移除更新条件

可以使用以下两个命令来删除:

ALTER TABLE `invoices`.`invoices`
    CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT 0;

ALTER TABLE `invoices`.`invoices`
    CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

注意: 这只适用于MySQL,而不是SQL Server。


你自己试过了吗?它们两个都会产生SQL语法错误。 - nevvermind
1
是的,我已经尝试过了。DateTime 是列名,请仔细检查。 - Abhishek Goel

1

针对您的使用情况,我认为您最好使用DATETIME,例如:

ALTER TABLE `my_table`
    CHANGE `my_col` `my_col` DATETIME NOT NULL DEFAULT NOW();

这将在插入时默认为NOW(),但在更新时保持不变。

有关区别的良好解释,请参见此问题:我应该使用字段“datetime”还是“timestamp”?


0
ALTER TABLE `invoices` CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT '0000-00-00 00:00:00'

或者

ALTER TABLE `invoices` CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP

虽然答案总是受欢迎的,但这个问题已经被问了6年,并且已经有了一个被接受的解决方案。请尽量避免通过提供答案来“顶”问题,除非该问题尚未标记为已解决,或者您找到了一个新的和改进的解决方案。还要记得提供一些代码周围的上下文来帮助解释它。查看关于撰写优秀答案的文档,获取一些有关如何使您的答案有价值的提示 :) - Obsidian Age

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接