如何做2 sql命令


How to do 2 sql command

第一个sql命令是:

INSERT INTO table1(post) values('$post');

插入$post后,我想更新另一个表中的列所以我用了

UPDATE table2 SET score='$score' where name='$name';

如何组合这两个命令,或者同时执行它们?
我是mysql的新手:)
以下是我想要的:一个用户去我的网站,发布一个字符串后,该用户的分数将更新

如果对于每个insertupdate,都可以向数据库中添加触发器。

代码:

delimiter |
CREATE or REPLACE TRIGGER TriggerName
AFTER INSERT
ON table1
BEGIN
     UPDATE table2 SET score=score + 1 WHERE name=INSERTED.user_id
    # INSERTED is the row added to table1
END;
delimiter ;

如果您在table1中有用户id字段,这应该会起作用。

否则,如果使用关系表,如user_post(id,user_id,post_id),则必须声明一个变量来临时存储id

如果您不喜欢从现在起维护两个应用程序(您拥有的一个和您通过添加触发器或函数在数据库中创建的一个),有一个更简单的解决方案:

只需使用一段PHP代码就可以将这些内容添加到数据库中(比如函数或类的方法),只需一个接一个地发送两个查询即可。

为了获得额外的数据一致性,您应该使用一个事务,它只是两个额外的查询,或者适当地使用数据库类。例如,MySQLi具有http://php.net/manual/en/mysqli.begin-transaction.php启动交易,以及http://php.net/manual/en/mysqli.commit.php结束它(或http://php.net/manual/en/mysqli.rollback.php以撤消)。

function writePostWithScore($post, $name, $score) {
    // have the mysqli connection object somewhere
    $mysqli->begin_transaction(MYSQLI_TRANS_START_READ_WRITE);
    $mysqli->query("INSERT INTO table1 (post) values('".$mysqli->real_escape_string($post)."')");
    $mysqli->query("UPDATE table2 SET score='".$mysqli->real_escape_string($score)."' where name='".$mysqli->real_escape_string($name)."'");
    $mysqli->commit();
}

我总是创建函数。创建2个函数。一个插入,另一个将更新。打电话给你需要的人。