删除更新条件而不删除mysql表

时间:2010-09-06 13:25:06

标签: sql mysql

我有一个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”条件。我怎么能改变这张桌子?

4 个答案:

答案 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
相关问题