0

この問題が発生しました。次のテーブルを含む mysql データベースがあります。

USERS(Cod,Interests)
SURVEY(Cod,Target_Interests)
USERS_OF_A_SURVEY(CodSurvey,CodUser)

Target_Interestsと同じ値のセットを持つInterestsを使用します。

データベースに、inserton SURVEYの後に、次のように 1000 エントリを配置するトリガーが必要USERS_OF_A_SURVEYです。

例: SURVEY に value を入力しますSURV001,MUSIC

これで、トリガーは に固定されたCodSurveyで 1000 エントリを配置USERS_OF_A_SURVEYし、 でユーザーからランダムに配置する必要があります。SURV001CodUserInterests = MUSIC

問題を適切に説明したかどうかわかりませんが、そうであることを願っています。助けて!

ありがとう

4

1 に答える 1

0

これを探していますか?

CREATE TRIGGER tg_survey_after_insert
AFTER INSERT ON survey
FOR EACH ROW 
  INSERT INTO users_of_a_survey (codsurvey, coduser)
  SELECT NEW.cod, cod
    FROM users
   WHERE interests = NEW.target_interests
   ORDER BY RAND()
   LIMIT 1000
;

数行挿入

INSERT INTO survey VALUES('SURV001', 'music');
INSERT INTO survey VALUES('SURV002', 'music');

users_of_a_survey挿入後の内容

| | CODサーベイ | COD ユーザー |
-----------------------
| | SURV001 | 3 |
| | SURV001 | 1 |
 ………………
| | SURV002 | 1 |
| | SURV002 | 4 |
...................................

これがSQLFiddle のデモです。

更新

そして、逆にしたい場合は?調査を削除すると、「users_of_a_survey」からすべてのユーザーが削除されますか?

BEFORE DELETEトリガーまたはFOREIGN KEY ... ON DELETE CASCADE

トリガーは次のようになります

CREATE TRIGGER tg_survey_after_delete
BEFORE DELETE ON survey
FOR EACH ROW 
  DELETE FROM users_of_a_survey 
   WHERE codsurvey = OLD.cod
;

これがSQLFiddle のデモです。

于 2013-06-08T08:14:14.293 に答える