我有一个带有 2 个主键的表(user_id
,post_id
)我只想插入行,如果表没有这个行user id
并且post id
如果这个键存在以前的数据,那么只有那个行更新我写这个查询的新数据:
INSERT INTO trust_list(`user_id`,`post_id`,`post_per`,`comment_per`,`cat_per`)
VALUES (7,1,'000','000','000')
ON DUPLICATE KEY UPDATE `post_per`='000',`comment_per`='000',`cat_per`='000'
例如,如果该行存在于表中:
- 用户 ID:5
- post_id:1
- post_per:001
- 评论员:111
- cat_per:101
然后,当我执行上述查询时,mysql 更新这一行,只是因为post_id
这一行是“1”,而 mysql 不应该更新这一行。我不明白有什么问题。
DESC trust_list
上述查询的结果是:
Field Type Null Key Default Extra
user_id int(11) NO PRI NULL
post_id int(4) NO PRI NULL
post_per tinytext YES NULL
comment_per tinytext YES NULL
cat_per tinytext YES NULL
==================
感谢我所有的朋友当我决定删除表并再次使用它时,我从这个表中得到一个导出并查看.sql
文件,我看到了这个:
CREATE TABLE IF NOT EXISTS `trust_list` (
`user_id` int(11) NOT NULL,
`post_id` int(11) NOT NULL,
`post_per` tinytext COLLATE utf8_estonian_ci ,
`comment_per` tinytext COLLATE utf8_estonian_ci ,
`cat_per` tinytext COLLATE utf8_estonian_ci ,
PRIMARY KEY (`idea_id`,`user_id`),
UNIQUE KEY `idea_id` (`idea_id`)
)
显然,问题来自 UNIQUE KEY,我将其从文件中删除,然后删除trust_list
表,然后导入 .sql 文件所以有了这个,我的问题解决了再次感谢