MySQLトリガー(TRIGGER)を使ってテーブルに現在の日付を自動挿入する方法
この記事では、MySQLのトリガー(TRIGGER)を使用して、テーブルに現在の日付(DATE)を自動的に挿入する方法を解説します。INSERT文の実行時に日付を指定しなくても、トリガーによって自動的に現在日付が登録される仕組みを見ていきましょう。
サンプルテーブルの作成
まず、以下のクエリでテーブルを作成します。
mysql> create table DemoTable1584
-> (
-> DueDate datetime
-> );
Query OK, 0 rows affected (1.79 sec)
ここでは、datetime型の「DueDate」カラムを持つテーブル「DemoTable1584」を作成しました。
トリガーの作成
次に、INSERT実行前に現在の日付を自動設定するトリガーを作成します。
mysql> create trigger insertDate before insert on DemoTable1584
-> for each row set new.DueDate=curdate();
Query OK, 0 rows affected (0.22 sec)
このトリガーのポイントは次のとおりです。
・「before insert」を指定することで、レコードが挿入される直前に処理が実行されます。
・「for each row」により、挿入される各行に対して処理が適用されます。
・「curdate()」関数は現在の日付を返すため、その値が新しい行のDueDateカラムにセットされます。curdate()の時刻部分は常に00:00:00になります。
レコードの挿入
insertコマンドを使って複数のレコードを挿入します。DueDateの値を明示的に指定していませんが、トリガーによって自動的に現在の日付が設定されます。
mysql> insert into DemoTable1584 values();
Query OK, 1 row affected (0.66 sec)
mysql> insert into DemoTable1584 values();
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable1584 values();
Query OK, 1 row affected (0.07 sec)
結果の確認
select文ですべてのレコードを表示してみましょう。
mysql> select * from DemoTable1584;
上記のクエリを実行すると、次のような出力が得られます。
+---------------------+
| DueDate |
+---------------------+
| 2019-10-18 00:00:00 |
| 2019-10-18 00:00:00 |
| 2019-10-18 00:00:00 |
+---------------------+
3 rows in set (0.00 sec)
このように、INSERT文で日付を指定しなくても、BEFORE INSERTトリガーのおかげですべてのレコードに挿入時点の現在日付が自動的に登録されていることが確認できます。作成日や更新日の管理など、実際の開発現場でも役立つテクニックなので、ぜひ活用してください。
-
Javaを使ってMySQLテーブルにレコードを挿入する方法
はじめに本記事では、JavaのJDBC(Java Database Connectivity)を使用して、MySQLデータベースのテーブルにレコードを挿入する手順を解説します。まずテーブルを作成し、その後Javaプログラムからデータを登録するまでの一連の流れを見ていきましょう。1. MySQLでテーブルを作成するまず、データを挿入するためのテーブルを作成します。以下はMySQLでテーブルを作成するクエリです。mysql> create table DemoTable( Id int, Name varchar(30),&
-
JavaでMySQLテーブルに1つのカラムのみを挿入する方法
JavaとMySQLを連携させる際、テーブルの一部のカラムだけにデータを挿入したいケースはよくあります。その場合は、JDBCのINSERT INTOステートメントを使用します。挿入対象のカラム名を明示的に指定することで、他のカラムには影響を与えずに1つのカラムのみへ値を登録できます。この記事では、実際にテーブルを作成し、Javaのコードから「Name」という1つのカラムだけにデータを挿入する手順を解説します。1. 挿入先のテーブルを作成するまず、MySQLで以下のようにテーブルを作成しておきましょう。ここでは、varchar型の「Name」カラムを1つだけ持つシンプルなテーブルを用意します。m