• 締切済み

MSSQLサーバーから移行

お世話になっております。 MS-SQLServer2008からMySQL5.1への移植を行っています。 MYSQLの知識がまったくなく、調べながら行っているのですが、 TriggerがどうしてもCreateでエラーになってしまいます。 CREATE TRIGGER tgrMデータ AFTER UPDATE ON M_データ FOR EACH ROW BEGIN UPDATE M_データ SET `DATA切替日` = now(), `使用区分` = 'Regular' where (`使用区分` <> 'Trial' or `使用区分` is null) and `DATA切替日` is null and `ステータス` = '1'; END; phpMyAdminというツールのSQLをデータベースに対し 発行するSQLの箇所で上記を実行しています。 エラー内容がよく理解できず、何がおかしいのか まったくわかりません。 お忙しい中とは存じますが、ご教授願えませんでしょうか。

みんなの回答

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

SUPER privilege が必要とあるので、phpMyAdmin でMySQLにアクセスするユーザーに、SUPER権限が必要ということです。デリミタ変更時に必要のようです。 権限付与が出来るユーザー(通常root) でアクセスして、対象ユーザーに、SUPER, TRIGGER の権限も追加付与するか、root ユーザーから triger 文を発行してしまうかしてください。 http://dev.mysql.com/doc/refman/5.1/ja/grant.html

  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.1

create trigger の様に、内部に ; セミコロンを含む文は「デリミタ」の変更が必要です。 デリミタの欄に別の記号 # などを入れて、end の後ろは、end# としましょう

mattys
質問者

補足

回答有難うございます。 phpMyAdminでデリミタを#にし、 SQLを以下の様に変更しました。 CREATE TRIGGER tgrMデータ AFTER UPDATE ON M_データ FOR EACH ROW BEGIN UPDATE M_データ SET `DATA切替日` = now(), `使用区分` = 'Regular' where (`使用区分` <> 'Trial' or `使用区分` is null) and `DATA切替日` is null and `ステータス` = '1'; END# 実行したところ エラーで #1227 - Access denied; you need the SUPER privilege for this operation となってしまいます。 何がいけないんでしょうか。 たびたび申し訳御座いません。

関連するQ&A