0

我遇到了这个问题。我有一个带有这些表的 mysql 数据库:

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

与具有相同Target_Interests值集的兴趣

我想在我的数据库中有一个触发器,insertSURVEYUSERS_OF_A_SURVEY之后,以这种方式放置 1000 个条目:

例如:我将值放入 SURVEY 中SURV001,MUSIC

现在触发器应该在 CodSurvey 固定为 1000 个条目USERS_OF_A_SURVEYSURV001用户CodUser中随机添加Interests = 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插入后的内容

| 调查问卷 | 密码用户 |
----------------------
| 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 回答