1

我记得在过去的项目中,我遇到过一条 MySQL 错误消息,指出没有记录可以是相同的(所有列),因为这样就不能单独选择它们。不幸的是,我的 MySQL 没有给我这个错误,我有一个问题。

我有一个表来存储用户最喜欢的主题(或文章,如果你愿意的话),这相当简单

CREATE TABLE `ad_favorites` (  
    `ad_id` int(10) unsigned NOT NULL,  
    `user_id` int(10) unsigned NOT NULL,  
    KEY `ad_id` (`ad_id`),  
    KEY `user_id` (`user_id`),  
    CONSTRAINT `ad_favorites_ibfk_1` FOREIGN KEY (`ad_id`) REFERENCES `ad` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,  
    CONSTRAINT `ad_favorites_ibfk_2` FOREIGN KEY (`user_id`) REFERENCES `users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8

如果有这样的尝试,我需要不能插入两条相同的记录并得到错误,以便在我的 php 中我的affected_rows属性将显示 0。

长话短说,如果我有一条记录并且我尝试再次插入它,我必须得到一个 MySQL 错误,这可能吗?

4

1 回答 1

3

使两列成为复合主键,

PRIMARY KEY (ad_id, user_id)
于 2013-09-23T20:01:03.030 回答