年内完成を目指して

2008 年 9 月 30 日 | カテゴリー: 徒然なるままに…

昨夜挑戦したMySQLのトリガー、あまりにも便利なのでバンバン作成してしまいましたが、これって乱用しても大丈夫なのかなぁ(゚ー゚*?)

一応どれも問題なく動いてくれていますが、SQLの理解がまだまだ浅いようです。

CREATE TRIGGER trigger_name BEFORE DELETE

ON table_name FOR EACH ROW

BEGIN

INSERT INTO back_up

SELECT * FROM table_name

WHERE id = OLD.id;

END//

という感じで作成したのですが、必要ないカラムは省いてしまえい(*`▼´*)b!!と、貧乏性が顔を出します。

そこで、バックアップ用のテーブルは必要であろうカラムのみにして、赤字の部分を以下のように変えてみました。

INSERT INTO back_up

(col1, col2, col3)

VALUES

(SELECT

col1,

col2,

col3

FROM table_name

WHERE id = OLD.id);

(本来のテーブルにはもっとカラム数が多いワケですが)

すると、MySQLから例によって例の如くsyntax error凸(゚皿゚メ)のご挨拶…。

SQLの構文にミスがあるとの事なので、SELECTを利用したINSERT文に問題があるか、トリガーの仕組みを分かっていないかどちらかなのでしょうね~(両方という指摘はごカンベン(≧ヘ≦))

貧乏性にはフタをして、運用テーブルとバックアップテーブルの構成を同じにして取りあえず解決ですが、まだまだ勉強しなくてはイケマセン。

そんなこんなで、管理画面で唯一残っていたメールのやり取りに関しても、送受信テストまで完了いたしましたので、さぁ今度こそ公開画面にがっぷり四つです!!

燃えてきました。何だかとっても燃えてきました((((((ノ゚⊿゚)ノヌオォォォ

コメントはまだありません。