一つのテーブルにtimestamp型のカラムを2つ設定できる?

MySQLのテーブルには、複数のTIMESTAMP型のカラムを定義することができます。つまり、1つのテーブルに複数のTIMESTAMP型のカラムを設定することができます。

ただし、TIMESTAMP型のカラムには、自動的に生成される現在の日時が格納される場合があります。この場合、複数のTIMESTAMP型のカラムがある場合、MySQLはどのカラムに現在の日時を挿入すべきかを判断する必要があります。そのため、複数のTIMESTAMP型のカラムを定義する場合、注意が必要です。

MySQLは、最初にTIMESTAMP型のカラムに現在の日時を挿入し、次に定義されたカラムにはNULL値が挿入されるという動作をします。つまり、2つ以上のTIMESTAMP型のカラムを持つテーブルで、現在の日時を複数のカラムに挿入することはできません。

例えば、次のようなテーブルを作成することができますが、INSERT文での挿入の場合、created_atカラムに現在の日時が自動的に挿入され、updated_atカラムにはNULL値が挿入されます。

CREATE TABLE my_table (
  id INT PRIMARY KEY,
  created_at TIMESTAMP,
  updated_at TIMESTAMP
);

この制限を回避するには、1つのTIMESTAMP型のカラムを定義し、必要に応じてそのカラムを更新することができます。また、DATETIME型を使用することもできます。DATETIME型は、ローカルな日時を格納するためのデータ型であり、複数のDATETIME型のカラムを定義しても問題ありません。