php
  • mysql
  • sql
  • 2011-09-04 88 views 1 likes 
    1

    我有一个名为'updated'的列表。当一个新行被创建时,该列自动插入当前时间。但是,我想更新列以及..如何做到这一点的任何输入?这是我的更新语句(不具有“更新”一栏至今):SQL:使用时间戳更新

    $update = mysql_query("UPDATE documents SET company = '$company',claimnumber = '$claimnumber',fullname = '$fullname',dateofloss = '$dateofloss',foruser = '$foruser' "."WHERE doc_id =".$doc_id); 
    

    回答

    1

    如果你想updated列要在更新而更新,分配NOW()它在您的查询。

    +0

    哇,这很简单。谢谢! – Zakman411

    +0

    但是这需要修改每个'UPDATE文件'(包括现在和未来的文件),这可能会或可能不是一大堆令人不快的事情。 –

    +0

    @mu我同意。这就是为什么我upvoted你的答案:) – alex

    1
    ALTER TABLE `documents` 
    ADD COLUMN `UpdatedDate` TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP NOT NULL; 
    

    编辑:要改变...

    ALTER TABLE `documents` 
    MODIFY `updated` TIMESTAMP DEFAULT CURRENT_TIMESTAMP 
    ON UPDATE CURRENT_TIMESTAMP NOT NULL; 
    
    +0

    感谢您的答复 - 我不想添加列虽然,它已经存在(因为整个行最初创建)。有没有更新的方法? – Zakman411

    +0

    @ Zakman411:[“使用DEFAULT CURRENT_TIMESTAMP和ON UPDATE CURRENT_TIMESTAMP子句,该列具有其默认值的当前时间戳,并自动更新。”](http://dev.mysql.com/doc/refman/5.6 /en/timestamp.html),ON UPDATE位与我的触发器方法具有相同的效果。所以更新后的MODIFY版本的ALTER TABLE可以做到这一点。 –

    2

    使用trigger,是这样的:

    create trigger updated_is_now before update on documents 
    for each row set NEW.updated = now(); 
    

    然后你就可以在你平时发送SQL语句UPDATE和触发器将,有效地将updated = now()添加到SET子句。

    +0

    +1为触发器。 – alex

    +0

    @mu:我在最后有一条if语句(请参阅我的原始文章),一次只允许更改一行。但是,如果有很多行需要一次编辑,这会很有用,对吧? – Zakman411

    +0

    @ Zakman411:触发器可以在一行或多行的情况下工作。 –

    相关问题