0

所以我一直在读 mysql 不支持插入到乘法表中。您实际上需要在查询中执行两个或多个 INSERT INTO 。但我的问题是更新两个表,但如果一个表不存在则插入。是否可以仅在一个查询中完成?

我有这个。

UPDATE user, userdetails SET
userdetails.firstname   = ?,
user.username       = ?,
user.email              = ?,
userdetails.location    = ?
WHERE user.id               = ? 
AND userdetails.user_id     = ?

$values = array($firstname,$username,$email,$location,$_SESSION['id'],$_SESSION['id']);

但它并不总是在最后一行

 AND userdetails.user_id='{$_SESSION['id']}'

我也读过 DUPLICATE KEY UPDATE,但这不应该工作,因为他们不止一张桌子?

我可以轻松地创建一个查询,在用户注册时默认将 user_id 插入到 userdetails.user_id 中,但是让它成为查询会更好。

4

1 回答 1

1

INSERT语句不支持同时向多个表添加记录。为此,您需要一个简单的交易:

BEGIN
INSERT INTO table_a (...)
INSERT INTO table_b (...)
COMMIT

如果插入时出现错误table_a,则可以回滚到事务的开头。这是 SQL 标准的做事方式。

如果记录已经存在,您可以使用它INSERT ... ON DUPLICATE KEY来更新记录,或者使用非标准 MySQLREPLACE INTO删除任何冲突的记录并用您的数据替换它们。

于 2013-04-26T15:52:53.147 回答