我有一个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;
我想删除“更新CURRENT_TIMESTAMP”条件。我怎么能改变这张桌子?
答案 0 :(得分:49)
ALTER TABLE `invoices`.`invoices`
CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
答案 1 :(得分:7)
aularon的ans不会删除更新后的条件
可以使用以下两个命令删除它:
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
答案 2 :(得分:1)
对于您的用例,我认为您可以更好地使用DATETIME
,例如:
ALTER TABLE `my_table`
CHANGE `my_col` `my_col` DATETIME NOT NULL DEFAULT NOW();
这将在插入时默认为NOW()
,但在更新时不受影响。
有关差异的详细解释,请参阅此问题:Should I use field 'datetime' or 'timestamp'?
答案 3 :(得分: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