[前][次][番号順一覧][スレッド一覧]

mysql:16354

From: ochiai <ochiai <s.ochiai@xxxxxxxxxx>>
Date: Fri, 22 Jul 2016 12:16:51 +0900
Subject: [mysql 16354] 一つのイベントに対して複数のSQLを実行するTRIGGERを定義したい

MLの皆様、お世話になります。

CREATE TRIGGERで困っています。
やりたいことは、親テーブルとその明細のテーブルがあり、明細テーブルのいず 
れかの行の値(data)を更新したら、更新のタイムスタンプを親 テーブルと子 
テーブルのそれぞれに記録するということです。
よろしくお願いします。

一つのイベントに対して複数のSQLを実行するTRIGGERを定義したいのですが、う 
まくできません。
調べてみたら、複数のサイトにCREATE TRIGGER文をDELIMITER句で挟めば複数の 
SQL文を定義できる、と書いてありましたので、その通りにやりましたがうまく 
いきません。

1)create triggerを delimiter $$ 〜 $$ delimiter;でくくる
2)複数のSQL文をBEGIN 〜 ENDでくくる
参考にしたサイト:http://wikiwiki.jp/yonkoushi2/?MySQL%2Fdbonline%2Fview

以下のようにMySQL Workbench(6.3Community)のSQLエディターで下記のSQLを実 
行し、エラーなくトリガーが作成されますが、トリガーの対象とした テーブル 
の行を更新しようとすると下記のエラーが発生し、更新ができません。
なお、親テーブルと明細テーブルとの連携キーは 
parent_table.id=child_table.p_idです。

<トリガー作成>
DELIMITER $$

CREATE DEFINER=`root`@`localhost` TRIGGER `child_table_AFTER_UPDATE` 
AFTER UPDATE ON `child_table` FOR EACH ROW
BEGIN
update parent_table set lastupdtime = sysdate() where id = old.p_id;
update child_table set lastupdtime = sysdate() where new.data <> old.data;
END;
$$

DELIMITER ;

<エラーメッセージ>
CREATE DEFINER=`root`@`localhost` TRIGGER `child_table_AFTER_UPDATE` 
AFTER UPDATE ON `child_table` FOR EACH ROW
BEGIN
update parent_table set lastupdtime = sysdate() where id = old.p_id;
update child_table set lastupdtime = sysdate() where new.data = old.data;
END;
Error Code: 1235. This version of MySQL doesn't yet support 'multiple 
triggers with the same action time and event for one table'    0.016 sec

<show triggers;のstatementの値>
BEGIN
update parent_table set lastupdtime = sysdate() where id = old.p_id;
update child_table set lastupdtime = sysdate() where new.data = old.data;
END;

エラーメッセージもshow triggersの結果もDELIMITERが反映されていません。
エラーメッセージに“This version of MySQL doesn't yet support 'multiple 
triggers...”とあるので、5.6.31では対応していないということでしょうか?対 
策あるいは対応しているバージョンを教えてください。


当方の実行環境:
MySQL version:5.6.31-log MySQL Community Server(GPL)
       Compiled For: win32(AMD64)

MySQL Workbench(6.3Community)

OS:Windows 7 Professional 32bit



[前][次][番号順一覧][スレッド一覧]

->   16354 2016-07-22 12:16 [ochiai <s.ochiai@xxx] 一つのイベントに対して複数のSQLを実行するTRIGGERを定義したい
     16355 2016-07-22 12:31 ┗["yoku ts." <yoku0825] Re: [mysql 16354] 一つのイベントに対して複数のSQLを実行するTRIGGERを定義したい
     16356 2016-07-27 11:19  ┗[ochiai <s.ochiai@xxx] Re: [mysql 16355] Re: [mysql 16354] =e4=b8e3a4のイベントに対して複数のSQLを実行するTRIGGERを定義したい
     16357 2016-07-27 12:00   ┗["yoku ts." <yoku0825] Re: [mysql 16356] Re: [mysql 16355] Re: [mysql 16354] 一つのイベントに対して複数のSQLを実行するTRIGGERを定義したい
     16358 2016-07-27 15:29    ┗[ochiai <s.ochiai@xxx] Re: [mysql 16357] Re: [mysql 16356] Re: [mysql 16355] Re: [mysql 16354] 一つのイベントに対して複数のSQLを実行するTRIGGERを定義したい
     16359 2016-07-27 15:37     ┗["yoku ts." <yoku0825] Re: [mysql 16358] Re: [mysql 16357] Re: [mysql 16356] Re: [mysql 16355] Re: [mysql 16354] 一つのイベントに対して複数のSQLを実行するTRIGGERを定義したい
     16360 2016-07-27 15:47      ┗[ochiai <s.ochiai@xxx] Re: [mysql 16359] Re: [mysql 16358] Re: [mysql 16357] Re: [mysql 16356] Re: [mysql 16355] Re: [mysql 16354] =e4=b8つのイベントに対して複数のS