mysql explicit_defaults_for_timestampパラメータの詳細
1614 ワード
mysqlには、1行のデータの一部の列が更新され、この行にtimestampタイプの列がある場合、このtimestamp列のデータも、更新操作が発生した時点に自動的に更新されます.この操作はexplicit_defaults_for_timestampこの変更制御の
explicit_defaults_for_timestampこの変更はonに設定されています.timestamp列の値に指定が表示される場合、このデフォルトの動作はオフになります.このクローズは、テーブル構造が変更されたため、作成したテーブル1、explicit_にはパラメータ値の変更が影響しないため、クローズ後に作成したテーブルにのみ有効です.defaults_for_timestamp=off時テーブル構造
1、explicit_defaults_for_timestamp=on時表構造
mysql> create table t(x int ,y timestamp); -- timestamp
Query OK, 0 rows affected (0.01 sec)
mysql> insert into t(x) values(1); -- x
Query OK, 1 row affected (0.00 sec)
mysql> select * from t; -- timestamp
+------+---------------------+
| x | y |
+------+---------------------+
| 1 | 2017-06-07 13:48:56 |
+------+---------------------+
row in set (0.00 sec)
mysql> update t set x=2 where x=1; -- update timestamp
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from t;
+------+---------------------+
| x | y |
+------+---------------------+
| 2 | 2017-06-07 13:49:21 |
+------+---------------------+
row in set (0.00 sec)
explicit_defaults_for_timestampこの変更はonに設定されています.timestamp列の値に指定が表示される場合、このデフォルトの動作はオフになります.このクローズは、テーブル構造が変更されたため、作成したテーブル1、explicit_にはパラメータ値の変更が影響しないため、クローズ後に作成したテーブルにのみ有効です.defaults_for_timestamp=off時テーブル構造
CREATE TABLE `t` (
`x` int(11) DEFAULT NULL,
`y` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- `y` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE
1、explicit_defaults_for_timestamp=on時表構造
CREATE TABLE `t6` (
`x` int(11) DEFAULT NULL,
`y` timestamp NULL DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- `y` timestamp NULL DEFAULT NULL