MySQLでNULL値の挿入と同時に日付・時刻を自動的に登録する方法
DEFAULT CURRENT_TIMESTAMPを使った自動挿入の仕組み
MySQLでは、カラムを DEFAULT CURRENT_TIMESTAMP として宣言しておくことで、他のカラムにNULL値を挿入したタイミングで、そのカラムへ現在の日付と時刻を自動的に挿入することができます。
なお、この方法を使う場合、NULL値を挿入したいカラムは NOT NULL 制約を付けて宣言できない点に注意が必要です。
テーブルの作成例
まず、以下のようにテーブルを作成します。
mysql> Create Table Testing1(Name Varchar(20), RegStudent TIMESTAMP DEFAULT CURRENT_TIMESTAMP); Query OK, 0 rows affected (0.15 sec)
上記のクエリにより、「Testing1」というテーブルが作成されます。このテーブルには次の2つのカラムが定義されています。
- Name: NOT NULL制約を付けていないため、NULL値の挿入が可能
- RegStudent: DEFAULT CURRENT_TIMESTAMPとして宣言されており、現在の日付と時刻が自動的に登録される
NULL値の挿入と自動的な日付・時刻の登録
それでは、NameカラムにNULL値を挿入してみましょう。RegStudentカラムには何も指定しなくても、現在の日付と時刻が自動的に記録されます。
mysql> Insert into Testing1(Name) Values(NULL); Query OK, 1 row affected (0.08 sec) mysql> Insert into Testing1(Name) Values(NULL); Query OK, 1 row affected (0.04 sec)
挿入後、テーブルの中身を確認してみます。
mysql> Select * from Testing1; +------+---------------------+ | Name | RegStudent | +------+---------------------+ | NULL | 2017-10-29 04:46:59 | | NULL | 2017-10-29 04:47:02 | +------+---------------------+ 2 rows in set (0.05 sec)
実行結果のポイント
結果を見ると、NameカラムにはNULL値が格納されている一方で、RegStudentカラムにはINSERT文を実行した瞬間の日付と時刻が自動的に記録されていることがわかります。このように、レコードの作成日時を自動的に管理したい場合に、DEFAULT CURRENT_TIMESTAMP は非常に便利な機能です。
-
MySQLでINSERTと同時に日付・時刻の値を加算して更新する方法
MySQLのINSERT時に日付や時刻を加算する方法 この記事では、INSERTクエリを実行する際に、datetime型の値をそのまま挿入するのではなく、指定した期間(分・時間・日・月・年)を加算した値を登録する方法を解説します。DATE_ADD関数を使うことで、挿入と同時に日付の計算を行うことができます。 1. テーブルの作成 まず、サンプル用のテーブルを作成します。 mysql> create table DemoTable816 (DueDate datetime); Query OK, 0 rows affected (0.45 sec) 2. DATE_ADD関数を使ったデ
-
MySQLでテーブルの列にNULL値を設定して挿入する方法
テーブル列にNULL値を許可する方法MySQLでは、列の定義時にNULLを指定することで、その列にNULL値を保存できるようになります。以下の構文に従って、データ型の後にNULLを記述してください。yourColumnName dataType NULL;テーブルの作成まず、FirstName列にNULL値を許可するテーブルを作成しましょう。mysql> create table DemoTable759 ( Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, &nbs