我的表不需要特定字段作为主键。我可以添加一个自动增量ID字段,但在数据库查询中根本不会使用它......
我是否可以将一个独特的钥匙作为主要钥匙?
UNIQUE KEY由两个配对的字段组成:
a VARCHAR(64) NOT NULL,
b VARCHAR(64) NOT NULL,
UNIQUE KEY uk_ab(a,b)
答案 0 :(得分:6)
当然(不需要UNIQUE KEY
):
PRIMARY KEY (a, b)
PRIMARY KEY
是一个唯一索引,其中所有键列必须定义为NOT NULL
。如果它们没有显式声明为NOT NULL
,那么MySQL会隐式声明它(并且默默地)。一个表只能有一个PRIMARY KEY
。PRIMARY KEY
的名称始终为PRIMARY
,因此不能用作任何其他类型索引的名称。
和
PRIMARY KEY
可以是多列索引。但是,您无法使用列规范中的PRIMARY KEY
键属性创建多列索引。这样做只会将单列标记为主列。您必须使用单独的PRIMARY KEY(index_col_name, ...)
子句。
答案 1 :(得分:1)
不确定这是否有用......
PRIMARY KEY uk_ab(a,b)
答案 2 :(得分:1)
如果您的表已经有唯一约束,那么您需要添加主键(ALTER TABLE [table_name] ADD CONSTRAINT [constraint_name] PRIMARY KEY (a,b)
),并删除现有的唯一约束。否则,您将在同一列上有2个唯一索引
如果您创建新表格,请使用其他人建议的PRIMARY KEY(a,b)
代替UNIQUE(a,b)
。