MySQLでのカスケード更新の実装方法は?
MySQLは、外部キー制約とON UPDATE CASCADEを使用して、カスケード更新を実現できます。
最初に、テーブル作成時に外部キー制約を設定し、ON UPDATE CASCADEを設定する必要があります。例えば、ordersとcustomersという2つのテーブルがあるとします。ordersテーブルのcustomer_id列は、customersテーブルのid列に関連している外部キーです。
CREATE TABLE customers (
id INT PRIMARY KEY,
name VARCHAR(50)
);
CREATE TABLE orders (
id INT PRIMARY KEY,
order_number VARCHAR(50),
customer_id INT,
FOREIGN KEY (customer_id) REFERENCES customers(id) ON UPDATE CASCADE
);
上記の例では、外部キー制約がcustomersテーブルのid値が更新されるときにordersテーブルのcustomer_id値も同時に更新されることを指定しています。
例えば、customersテーブル内でidが1のレコードを更新したい場合、同時にordersテーブル内のcustomer_idが1のレコードも更新するには、以下のSQL文を実行することができます。
UPDATE customers SET id = 2 WHERE id = 1;
したがって、ordersテーブルのcustomer_idが1のレコードのcustomer_idの値も自動的に2に更新されます。
注意:連鎖更新を使用すると、予期しない結果やパフォーマンスの問題が発生する可能性があるため、注意して使用してください。