2

その値にすでにエントリがある場合、トリガーを使用して列の値を古い値と他のテーブルの新しい値に更新するにはどうすればよいですか? 私が欲しかったのは、次のようなものです。太字のイタリック体の部分に注目してください。

DELIMITER$$
CREATE TRIGGER trigger_name AFTER INSERT
ON table_one FOR EACH ROW
BEGIN
  INSERT INTO table_two(clmn_id, clmn_one) VALUES(NEW.clmn_id_fk,NEW.clmn_a)
  ON DUPLICATE KEY UPDATE clmn_one = VALUES(clmn_one + NEW.clmn_a);
END$$
DELIMITER;
4

2 に答える 2

3

ON DUPLICATE KEY からキーワード VALUES を削除してみてください。

DELIMITER$$
CREATE TRIGGER trigger_name AFTER INSERT
ON table_one FOR EACH ROW
BEGIN
  INSERT INTO table_two(clmn_id, clmn_one) VALUES(NEW.clmn_id_fk,NEW.clmn_a)
  ON DUPLICATE KEY UPDATE fine_amount = clmn_one + NEW.clmn_a;
END$$
DELIMITER;
于 2013-08-07T17:55:27.747 に答える
0

すでに存在するかどうかを確認するには、最初にselectステートメントが必要なようです。その場合は、変数を現在の値に設定してから、古い値 (変数) と新しい値を組み合わせた更新を実行します。レコードがまだ存在しない場合は、現在の値で挿入ステートメントを実行します。

于 2013-08-07T17:51:43.760 に答える