【发布时间】:2023-02-16 23:02:03
【问题描述】:
我有这个查询:
INSERT INTO table1 (user_id, item_id, stat, shipped) VALUES (17, 30, 1, 0)
ON DUPLICATE KEY UPDATE stat = 0;
我第一次运行它会添加一个新行。完美的。
第二次运行也是如此,尽管它应该将统计信息更新为 0。
我试图在 table1 表中将主键 (id) 设置为 UNIQUE,但没有成功。
有人对此有解决方案吗?
表格1
CREATE TABLE table1 (
id int NOT NULL AUTO_INCREMENT,
user_id int NOT NULL,
item_id int NOT NULL,
stat tinyint NOT NULL,
shipped tinyint NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (user_id) REFERENCES accounts(id),
FOREIGN KEY (item_id) REFERENCES items(id)
);
谢谢你!
【问题讨论】:
-
table1的确切结构是什么?您应该将其 create 语句放在问题本身中。 -
为什么您希望统计信息更新为 0?您在此处描述的内容没有定义为重复的内容。
-
我更新了问题。我有一个按钮,如果你按下它,它会调用一个 php 文件,其中包含一个需要将其设置为 1 的查询,如果你再次按下它,则将其设置回 0 或删除该行
-
user_id 上的唯一键将使这项工作有效。
-
这是否意味着如果我将 user_id 设置为唯一,我只能在该列中拥有该用户一次?我希望用户拥有超过 1 个项目。