MySQLデータベースのタイムスタンプを使用して時刻を自動的に更新する方法

黄舟
リリース: 2016-12-24 17:23:07
オリジナル
2287 人が閲覧しました

mysql では、タイムスタンプのデータ型は、更新するプログラムを使用せずにレコードのタイムスタンプを更新する限り、時刻を自動的に更新できます。
通常、テーブルには [作成日] フィールドがあります。デフォルト値のオプションがあります。 MySQL にもデフォルト値のタイムスタンプがありますが、MySQL では挿入だけでなく変更もタイムスタンプ値を更新します。
このように、作成日ではなく更新日として使用することをお勧めします。
そのため、MySQL で作成日を記録するには、datetime を使用してから NOW() 関数を使用して完了する必要があります。
1, TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
新しいレコードの作成時および既存のレコードの変更時にこのデータ列を更新します
2, TIMESTAMP DEFAULT CURRENT_TIMESTAMP 新しいレコードの作成時はこの
フィールドを現在時刻に設定しますが、変更時には将来の時刻に設定します、更新されなくなります
3、TIMESTAMP ON UPDATE CURRENT_TIMESTAMP 新しいレコードを作成するときにこのフィールドを 0 に設定します
、現在時刻に自動的に UPDATE および INSERT します:
Table:
--------- -- ------------------------
テーブル テーブルの作成
------ --------------- ----------- CREATE TABLE `t1` ( `p_c` int(11) NOT NULL、`p_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
データ:
1 2007-10-08 11:53:35
2 2007-10-08 11:54:00
t1(p_c) に挿入 select 3;update t1 set p_c = 2 where p_c = 2;
data:
1 2007 -10-08 11:53:35
2 2007-10-08 12:00:37
3 2007-10-08 12:00:37
2. 現在時刻に自動的に挿入されますが、自動的には更新されません。
テーブル:
---------------------------------
テーブル テーブルの作成
------ -- ------------------------
CREATE TABLE `t1` ( `p_c` int(11) NOT NULL、`p_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
Data:
insert into t1(p_c) select 4;update t1 set p_c = 3 where p_c = 3;
1 2007-10-08 11:53:35
2 2007-10 - 08 12:00:37
3 2007-10-08 12:00:37
4 2007-10-08 12:05:19
3 デフォルト値が現在時刻であるフィールドが 2 つ存在することはできません。それ以外の場合は、何か問題が発生しました。しかし、他の人は大丈夫です。
テーブル:
---------------------------------
テーブル テーブルの作成
------ -- ------------------------ CREATE TABLE `t1` ( `p_c` int(11) NOT NULL、`p_time` タイムスタンプ NOT NULL DEFAULT CURRENT_TIMESTAMP 、` p_timew2` タイムスタンプ NOT NULL DEFAULT '0000-00-00 00:00:00' ) ENGINE=InnoDB DEFAULT CHARSET=gb2312
Data:
1 2007-10-08 11:53:35 0000-00-00 00: 00:00
2 2007-10-08 12:00:37 0000-00-00 00:00:00
3 2007-10-08 12:00:37 0000-00-00 00:00:00
4 2007 -10 -08 12:05:19 0000-00-00 00:00:00
それに比べて、私のステートメントには「on update CURRENT_TIMESTAMP」がないか、「default CURRENT_TIMESTAMP」が追加されています。このように、タイムスタンプ フィールドはデータが挿入された時刻のみを確立し、更新されても変更されません。もちろん、この目標を達成したいだけであれば問題ありません。 1: 定義時に DEFAULT CURRENT_TIMESTAMP 句と ON UPDATE CURRENT_TIMESTAMP 句の両方が定義されている場合、列の値はデフォルトで現在のタイムスタンプを使用し、自動的に更新されます。
2: DEFAULT または ON UPDATE 句が使用されていない場合、DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP と同等です。
3: DEFAULT CURRENT_TIMESTAMP 句のみがあり、ON UPDATE 句がない場合、列の値はデフォルトで現在のタイムスタンプになりますが、自動的には更新されません。
4: DEFAULT 句が使用されていないが、ON UPDATE CURRENT_TIMESTAMP 句が存在する場合、列はデフォルトの 0 になり、自動的に更新されます。
5: 定数値 DEFAULT がある場合、列にはデフォルト値が設定され、現在のタイムスタンプに自動的に初期化されません。列に ON UPDATE CURRENT_TIMESTAMP 句もある場合、このタイムスタンプは自動的に更新されます。それ以外の場合、列にはデフォルトの定数がありますが、自動的には更新されません。
言い換えれば、現在のタイムスタンプを使用して値と自動更新を初期化することも、その一方を使用することも、どちらも使用しないこともできます。 (たとえば、定義時に自動更新を指定できますが、初期化はできません。) 次のフィールド定義は、これらの状況を示しています:

上記は、MySQL データベースのタイムスタンプ時刻を自動的に更新するメソッドの内容です。注意してください。その他の関連コンテンツは PHP 中国語 Web サイト (www.php.cn) にあります。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート