代码之家  ›  专栏  ›  技术社区  ›  HasanG Joe Dabones

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

  •  19
  • HasanG Joe Dabones  · 技术社区  · 14 年前

    我有一个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;
    

    我想删除“更新当前时间戳”条件。这张桌子怎么改?

    4 回复  |  直到 7 年前
        1
  •  49
  •   aularon    14 年前
    ALTER TABLE `invoices`.`invoices`
        CHANGE `DateTime` `DateTime` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP
    
        2
  •  7
  •   Abhishek Goel    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上使用

        3
  •  1
  •   Community gview    7 年前

    对于你的使用案例,我认为你应该得到更好的服务 DATETIME 如:

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

    这将默认为 NOW() 在插入时,但在更新时不受影响。

    请参阅此问题以获得对差异的良好解释: Should I use field 'datetime' or 'timestamp'?

        4
  •  0
  •   Anthony Awuley    7 年前
    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