我有一个表items
,用于保存已由用户选择但没有唯一或主键的项目,因为表格上没有唯一记录,因为每行userID
和{{1不是唯一的(用户肯定会有多个项目),listID
可以是唯一的/主要的,因为更多的用户可能会选择相同的项目。在该表上添加唯一和/或主键的正确方法是什么?
项目表:
itemID
项目数据:
CREATE TABLE IF NOT EXISTS `items` (
`userID` int(20) NOT NULL,
`listID` int(20) NOT NULL,
`itemID` int(20) NOT NULL,
`qty` int(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
答案 0 :(得分:1)
在表格中声明一个额外的“id”列,并使用自动增量。参见例如http://dev.mysql.com/doc/refman/5.0/en/example-auto-increment.html
此列没有任何意义,但它可以用于唯一引用表中的条目(主键的整个目的)。
答案 1 :(得分:1)
您可以跨多个列创建索引。在这种情况下,我建议您在所有ID
列中使用索引,以便项目对用户和列表是唯一的。这应该可以解决问题:
CREATE UNIQUE INDEX unique ON tbl_name (userID, listID, itemID);
答案 2 :(得分:0)
添加新列
`id` int (20) auto_increment primary key