gpt4 book ai didi

MySQL INSERT 未按预期工作

转载 作者:行者123 更新时间:2023-11-29 00:17:27 25 4
gpt4 key购买 nike

此查询正在运行从 PHP 调用的更新插入,除了一个表之外我没有得到更新,这真的很奇怪。我尝试了查询并注意到情况似乎是这样。如果我为以下值运行它,该行不会更新。

operation_attendee_id  operation_id   member_id   status
1 5 1 1

查询:

INSERT INTO
`operation_attendee` (
`operation_id`,
`member_id`,
`status`)
VALUES
(5,
1,
3)
ON DUPLICATE KEY UPDATE
`status` = 3

这不会更新表,但是在operation_id,member_id上有唯一索引

如果我竞选这一行

operation_attendee_id  operation_id   member_id   status
0 7 1 1

相同的查询,不同的数字

INSERT INTO
`operation_attendee` (
`operation_id`,
`member_id`,
`status`)
VALUES
(7,
1,
3)
ON DUPLICATE KEY UPDATE
`status` = 3

这个更新很好。我真的很困惑为什么这似乎是唯一正在更新的值集。

编辑:添加表 DDL 和所有索引:

CREATE TABLE `operation_attendee` (
`operation_attendee_id` int(11) NOT NULL,
`operation_id` int(11) NOT NULL,
`member_id` int(11) NOT NULL,
`status` int(11) NOT NULL,
PRIMARY KEY (`operation_attendee_id`),
UNIQUE KEY `uk_operation_member` (`operation_id`,`member_id`),
KEY `fk_operation_attendee_operation1_idx` (`operation_id`),
KEY `fk_operation_attendee_member1_idx` (`member_id`),
KEY `fk_operation_attendee_operation_attendee_status1_idx` (`status`),
CONSTRAINT `fk_operation_attendee_member1` FOREIGN KEY (`member_id`) REFERENCES `member` (`member_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_operation_attendee_operation1` FOREIGN KEY (`operation_id`) REFERENCES `operation` (`operation_id`) ON DELETE NO ACTION ON UPDATE NO ACTION,
CONSTRAINT `fk_operation_attendee_operation_attendee_status1` FOREIGN KEY (`status`) REFERENCES `operation_attendee_status` (`operation_attendee_status_id`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8

我还尝试运行带有外键检查的查询,但它仍然没有更新。

最佳答案

这似乎是代理键的问题。

我删除了它(那个表不需要它,很久以前其他人构建了它),然后用我之前使用的唯一键替换主键(也删除了唯一键,因为它是多余的) 查询现在似乎工作正常。

我不确定为什么它会导致问题的根本原因,但它现在有效。我认为我放在表上的唯一键会匹配 ON DUPLICATE KEY UPDATE 要求的条件。

关于MySQL INSERT 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22490576/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com