php
  • mysql
  • sql
  • 2011-09-04 94 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:觸發器可以在一行或多行的情況下工作。 –

    相關問題