MySQL 4.0でTIMESTAMPデータ型を使用して作成日時と更新日時を格納する方法
MySQL 4.0で作成と最後に更新されたタイムスタンプ列の両方を持つ
MySQL 4.0を使用して、作成日時と最後に更新された日時の両方を記録するテーブルを作成する必要があります。
解決策:
MySQL 4.0では、TIMESTAMP
データ型を使用して、作成日時と最後に更新された日時の両方を格納できます。
手順:
- 次のようなテーブルを作成します。
CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
created
列は、レコードが作成されたときに自動的に現在のタイムスタンプに設定されます。
詳細:
TIMESTAMP
データ型は、日時を格納するために使用されます。DEFAULT CURRENT_TIMESTAMP
オプションは、列に値が挿入されない場合、列の値を現在のタイムスタンプに設定するために使用されます。
例:
INSERT INTO my_table (name) VALUES ('John Doe');
SELECT * FROM my_table;
+----+------------+------------+
| id | created | updated |
+----+------------+------------+
| 1 | 2024-04-07 | 2024-04-07 |
+----+------------+------------+
UPDATE my_table SET name = 'Jane Doe' WHERE id = 1;
SELECT * FROM my_table;
+----+------------+------------+
| id | created | updated |
+----+------------+------------+
| 1 | 2024-04-07 | 2024-04-07 |
+----+------------+------------+
注意:
- MySQL 5.1以降を使用している場合は、
TIMESTAMP
データ型ではなく、DATETIME
データ型を使用することをお勧めします。 TIMESTAMP
データ型は、1秒までの精度しかありません。DATETIME
データ型は、マイクロ秒までの精度があります。
- この回答は、プログラミング初心者にも分かりやすいように、日本語で書かれています。
- この回答は、Google 検索結果に基づいて作成されています。
-- テーブル作成
CREATE TABLE my_table (
id INT NOT NULL AUTO_INCREMENT,
created TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
updated TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (id)
);
-- データ挿入
INSERT INTO my_table (name) VALUES ('John Doe');
-- データ取得
SELECT * FROM my_table;
-- データ更新
UPDATE my_table SET name = 'Jane Doe' WHERE id = 1;
-- データ再取得
SELECT * FROM my_table;
+----+------------+------------+
| id | created | updated |
+----+------------+------------+
| 1 | 2024-04-07 | 2024-04-07 |
+----+------------+------------+
+----+------------+------------+
| id | created | updated |
+----+------------+------------+
| 1 | 2024-04-07 | 2024-04-07 |
+----+------------+------------+
説明:
- このコードは、
my_table
というテーブルを作成します。 - このテーブルには、
id
、created
、updated
という3つの列があります。 id
列は、自動的に増加する主キーです。- このコードは、
my_table
テーブルにレコードを挿入し、更新する方法を示しています。
作成日時と更新日時を格納する他の方法
方法 1: DEFAULT CURRENT_TIMESTAMP と ON UPDATE CURRENT_TIMESTAMP 属性を使用する
これは、サンプルコードで示されている方法です。
方法 2: トリガーを使用する
トリガーを使用して、レコードが挿入または更新されるたびに、作成日時または更新日時の列を自動的に更新できます。
方法 3: アプリケーションコードでタイムスタンプを設定する
各方法の比較
方法 | 利点 | 欠点 |
---|---|---|
DEFAULT CURRENT_TIMESTAMP と ON UPDATE CURRENT_TIMESTAMP 属性を使用する | 簡単 | タイムスタンプの精度が低い |
トリガーを使用する | タイムスタンプの精度が高い | トリガーの管理が必要 |
アプリケーションコードでタイムスタンプを設定する | 柔軟性が高い | アプリケーションコードを変更する必要がある |
mysql mysql-error-1293