私は2つのテーブルを持っています:table1
そしてrating
table1(id,name,category)
rating (cid,rating,total_rating,total_rates,photoID)
そして今、私がテーブル1にデータを挿入するとき、私はテーブル1からのその特定のphotoIDに対してテーブル評価のすべてのデータをゼロに設定したいのですが、私は方法がわかりません..誰かが私を助けることができますか?
MySqlトリガーを使用できますhttp://dev.mysql.com/doc/refman/5.0/en/trigger-syntax.html:
CREATE TRIGGER ins_rating AFTER INSERT ON table1
FOR EACH ROW
BEGIN
INSERT INTO rating (cid,rating,total_rating,total_rates,photoID)
VALUES( NEW.ID ,0,0,0,null)
END;
STORED PROCEDURE
アプリケーションから単一の呼び出しを行うために を作成したいと思います。すべての挿入に対してINSERT
table にレコードを作成し、onが として設定されていると仮定します。rating
table1
ID
table1
AUTO_INCREMENT
DELIMITER $$
CREATE PROCEDURE procedureName
(
IN _name VARCHAR(25),
IN _category VARCHAR(25)
)
BEGIN
INSERT INTO table1 (name, category)
VALUES (_name, _category);
SET @last_ID := LAST_INSERT_ID();
INSERT INTO rating (cid, rating, total_rating, total_rates, photoID)
VALUES (@last_ID, 0,0,0,0);
END $$
DELIMITER ;
プロシージャを呼び出し、
CALL procedureName('nameHere','categoryHere')
を使用LAST_INSERT_ID()
して、挿入した ID を取得できます。たとえばPhotoID
、 と の間の関係を次のように仮定table1
しrating
ます。
insert table1 (name,category) values ('waterfall 2', 'nature');
insert rating (rating,total_rating,total_rates,photoID) values
(0, 0, 0, last_insert_id());
TABLE1 にデータを挿入し、TABLE2 から削除する場合は、以下のクエリを記述できます。
mysql_query("DELETE * FROM table2");