MySQL创建触发器将内容插入到同一数据库的另一个表中

时间:2013-12-07 13:16:27

标签: php mysql sql database triggers

我想创建一个创建新表Row的Trigger。我是“触发语言”的新手,我需要你的帮助。

我的数据库如下所示。

user
----------------------------------------------------
| userid | username | password | full_name | email |
----------------------------------------------------
| 67     | testuser | xxxxxxxx | thefullna | email |
----------------------------------------------------
| 68     | testuse2 | xxxxxxxx | thefulln2 | email |
----------------------------------------------------
| 69     | testuse3 | xxxxxxxx | thefulln3 | email |
----------------------------------------------------

highscore_easy
------------------------------------------------------
| ID   | user     | time     | date | level | userid |
------------------------------------------------------
| 200  | testuser | 11113233 | date | 444   | 0      |
------------------------------------------------------
| 201  | testuse2 | 11113235 | date | 444   | 0      |
------------------------------------------------------
| 203  | testuse3 | 11113236 | date | 444   | 0      |
------------------------------------------------------

如果创建了新用户,将在表“user”中创建一个新行。创建新行时,我想创建一个触发器,在“highscore_easy”中创建“DEFAULT”行。

默认行必须使用表“user”中填写的用户名,默认行中的时间,日期和级别可以为“0”,“highscore_easy”中的USERID必须与用户ID相同在“用户”表中。

所以,如果我现在创建一个用户:

user
----------------------------------------------------
| userid | username | password | full_name | email |
----------------------------------------------------
| 88     | example  | xxxxxxxx | thefullna | email |
----------------------------------------------------

highscore_easy
------------------------------------------------------
| ID   | user     | time     | date | level | userid |
------------------------------------------------------
| 200  | example  | 0        | 0    | 0     | 88     |
------------------------------------------------------

ID将在highscore_easy中自行创建。

如果我犯了一些错误,抱歉我的英语不好。如果你能帮助我,那真是太棒了。

也许有一种方法可以在没有触发器的情况下解决这个问题,但我不知道另一种解决方案。

1 个答案:

答案 0 :(得分:2)

您可以尝试这样的事情:

DELIMITER $$
CREATE TRIGGER `ai_user` AFTER INSERT ON user
  FOR EACH ROW BEGIN
  INSERT INTO highscore_easy 
  SET 
    user   = NEW.username, 
    userid = NEW.userid, 
    time   = 0, 
    date   = 0, 
    level  = 0;
END

在单次触发中,您可以根据需要添加尽可能多的插入内容:

DELIMITER $$
CREATE TRIGGER `ai_user` AFTER INSERT ON user
  FOR EACH ROW BEGIN

  INSERT INTO highscore_easy 
  SET 
    user   = NEW.username, 
    userid = NEW.userid, 
    time   = 0, 
    date   = 0, 
    level  = 0;

  INSERT INTO highscore_expert
  SET 
    user   = NEW.username, 
    userid = NEW.userid, 
    time   = 0, 
    date   = 0, 
    level  = 0;

END