TIMESTAMPもバッチリ!MySQLテーブル列のデフォルト値の変更テクニック
MySQL テーブル列のデフォルト値を変更する方法
構文:
ALTER TABLE table_name
MODIFY column_name data_type DEFAULT default_value;
例:
ALTER TABLE users
MODIFY created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
この例では、users
テーブルの created_at
列のデフォルト値を CURRENT_TIMESTAMP
に変更します。これにより、新しいレコードが挿入されるたびに、created_at
列に自動的に現在時刻が設定されます。
注意事項:
- デフォルト値を変更する前に、既存のデータに影響がないことを確認してください。
NOT NULL
列のデフォルト値を変更する場合は、新しいデフォルト値がその列の制約を満たしていることを確認してください。- TIMESTAMP または DATETIME 列のデフォルト値を
CURRENT_TIMESTAMP
に設定する場合、MySQL 8.0.13 以降を使用していることを確認してください。
補足情報:
- 列のデータ型を変更するには、
MODIFY
オプションの代わりにCHANGE
オプションを使用できます。 - 列を削除するには、
DROP
オプションを使用できます。
ALTER TABLE users
MODIFY created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP;
このコードを実行すると、users
テーブルの created_at
列に新しいレコードが挿入されるたびに、自動的に現在時刻が設定されます。
説明:
ALTER TABLE users
: この句は、users
という名前のテーブルを変更することを示します。MODIFY created_at TIMESTAMP
: この句は、created_at
という名前の列を変更することを示します。この列のデータ型はTIMESTAMP
である必要があります。
- このコードを実行する前に、
users
テーブルが存在し、created_at
という名前の列があることを確認してください。
以下の例は、products
テーブルの price
列のデフォルト値を 10.00
に変更する方法を示しています。
ALTER TABLE products
MODIFY price DECIMAL(10,2) DEFAULT 10.00;
ALTER TABLE customers
MODIFY status ENUM('active', 'inactive') DEFAULT 'active';
MySQL テーブル列のデフォルト値を変更するその他の方法
テーブルを作成する際に、DEFAULT
句を使用して列のデフォルト値を指定できます。
CREATE TABLE users (
id INT PRIMARY KEY AUTO_INCREMENT,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL UNIQUE,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
この例では、users
テーブルを作成し、created_at
列のデフォルト値を CURRENT_TIMESTAMP
に設定しています。
INSERT ステートメント
新しいレコードを挿入する際に、INSERT
ステートメントの VALUES
句で列の値を指定できます。
INSERT INTO users (name, email)
VALUES ('John Doe', '[email protected]');
この例では、users
テーブルに新しいレコードを挿入し、created_at
列には自動的に現在時刻が設定されます。
UPDATE ステートメント
既存のレコードの列値を更新する際に、UPDATE
ステートメントを使用できます。
UPDATE users
SET created_at = CURRENT_TIMESTAMP
WHERE id = 1;
この例では、users
テーブルの id
が 1 であるレコードの created_at
列を、現在時刻に更新します。
留意点
- 上記の方法でデフォルト値を変更する場合、既存のデータに影響を与えないことに注意する必要があります。
mysql database timestamp