所以我一直在读,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中,但查询它会更好。
答案 0 :(得分:1)
INSERT
语句不支持同时向多个表添加记录。为此,您需要一个简单的交易:
BEGIN
INSERT INTO table_a (...)
INSERT INTO table_b (...)
COMMIT
如果插入table_a
时出错,则可以回滚到事务的开头。这是SQL标准的处理方式。
如果记录已存在,您可以使用INSERT ... ON DUPLICATE KEY
更新记录,或者使用非标准MySQL REPLACE INTO
删除任何冲突记录并将其替换为您的数据。