私は MYSQL 5.1.38 を使用しており、次のテーブルがあります。
create table table1 (
col1 varchar(50) primary key not null,
ts1 timestamp not null default current_timestamp on update current_timestamp
)engine=innodb;
create table table2 (
col1 varchar(50) not null,
ts2 timestamp not null default current_timestamp on update current_timestamp,
foreign key (col1) references table1 (col1) on update cascade on delete cascade
)engine=innodb;
table1 の col1 を更新すると、table1 の ts1 と table2 の col1 は更新されますが、table2 の ts2 は更新されません。
出力は次のとおりです。
mysql> table1 (col1) 値 ('test') に挿入します。 クエリ OK、影響を受ける 1 行 (0.00 秒) mysql> table2 (col1) 値 ('test') に挿入します。 クエリ OK、影響を受ける 1 行 (0.00 秒) mysql> テーブル 1 から * を選択します。 +------+---------------------+ | | 列1 | ts1 | +------+---------------------+ | | テスト | 2013-05-17 09:37:56 | +------+---------------------+ セットで 1 行 (0.00 秒) mysql> テーブル 2 から * を選択します。 +------+---------------------+ | | 列1 | ts2 | +------+---------------------+ | | テスト | 2013-05-17 09:38:03 | +------+---------------------+ セットで 1 行 (0.01 秒) mysql> update table1 set col1='test1' where col1 = 'test'; クエリ OK、影響を受ける 1 行 (0.00 秒) 一致した行: 1 変更された: 1 警告: 0 mysql> テーブル 1 から * を選択します。 +--------------------+---------------------+ | | 列1 | ts1 | +--------------------+---------------------+ | | テスト1 | 2013-05-17 09:44:28 | +--------------------+---------------------+ セットで 1 行 (0.00 秒) mysql> テーブル 2 から * を選択します。 +--------------------+---------------------+ | | 列1 | ts2 | +--------------------+---------------------+ | | テスト1 | 2013-05-17 09:38:03 | +--------------------+---------------------+ セットで 1 行 (0.00 秒)
ts2も更新されると思います。これは予想される動作ですか?