2010-12-11 8 views
4

レコードが更新されたときにタイムスタンプ値に自動的に更新されるTIMESTAMPデータ型があり、すでにそのような列があることは知っています。MySQL:datetimeフィールドを自動的に設定して、作成タイムスタンプを記録する方法はありますか?

さらに、NOW()(またはCURRENT_TIMESTAMP)に自動的に値を設定して変更することはないが、MySQL DEFAULTは関数呼び出しをサポートしていないようです。

純粋なMySQLの回答のみ投稿してください。私はアプリケーションレベルでそれを行う方法を知っています。

編集:そのような機能がない場合は、私はそれを聞いていただければ幸いです。

EDIT2:MySQLバージョンは5.0.32

+0

OKです。私の悪い。私はREPLACE INTOを使用したいと言っていることを忘れていたので、そのことを明示せずに「自動的に」起こさせたいのです。 – tishma

+0

することができますが、**ただし**ただ1つの 'default current_timestamp'しか許可されていません – ajreal

答えて

9

トリガーを使用してデフォルトを設定します。

DELIMITER | 

CREATE 
    TRIGGER trigger_name BEFORE INSERT ON tbl_name FOR EACH ROW 
BEGIN 
    SET NEW.colname = NOW(); 
END; 

|

デリミタを含めて試してみてください。

+0

私は投票します。しかし、それは本当に完全な答えではありません... – tishma

+0

編集をありがとう。私はそれを受け入れるでしょう。 Btw、PHPMyAdminは ";"のためにこの文に問題があります。これは文の区切り文字として使用されます。 – tishma

3

私は自動的にNOWに移入列()(またはCURRENT_TIMESTAMP)を持っていると、決してあなたが(NOWへの移入にそれを欲しいと言って

を変更すると思います)、それあなたが最初にINSERTを参照しているように聞こえる。そうだとすれば、それを使うことができますか?何かのように

INSERT INTO table (field1,field2,my_datetime) VALUES (1,'a',NOW()) 
+0

正確に。これだけは自動ではありません...私はINSERTステートメントでその列を言及したいと思います。 – tishma

+0

今私が知っている方法 - 私はトリガーに向かって傾けるだろう。 – Riedsio

+0

私はトリガーを受け入れると思います。しかし、私はこのMySQLのバージョンに固執しており、トリガを作成するにはSUPER特権が必要なので、実際にはうまくいきません:( – tishma

関連する問題