如何解决表约束-MySQL中的主键
我有一张下表:
CREATE TABLE `a` (
`a1` int(11) NOT NULL,`a2` int(11) NOT NULL,PRIMARY KEY (`a1`,`a2`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
在这里,当我分配值时,
insert into a values(1,2);
在那之后,如果我给:
insert into a values(1,20);
insert into a values(10,2);
在这里,我已将a1和a2声明为主键,这意味着默认情况下为unique
和not null
。但是它接受上面给出的重复项(对于a1-(1,2)和(1,20))。不应该吧仅当我给出时,它才会给出错误:
insert into a values(1,2);
ERROR 1062 (23000): Duplicate entry '1-2' for key 'PRIMARY'
我不能将一列(不是列的组合)保留为空。它执行主键,如成对,但在单独的列中为not null
。为什么会这样?谁能解释我的意思?
解决方法
当您声明复合主键(a1和a2一起)时,它们必须一起唯一。这意味着您不能再插入var disItem = document.getElementById('P1_Text_Area');
disItem.readOnly = true;
一次。
如果您需要a1和a2自己是唯一的,则需要在每列上创建唯一索引。
(1,2)
主键的作用是为每个表行定义唯一性。
,在这里,您正在使用复合键。它的功能仅此而已。当您自动声明主键create table numb (num int);
insert into numb values(121975443);
insert into numb values(100030000);
insert into numb values(null);
insert into numb values(113313311);
insert into numb values(2020);
commit;
约束时,这两个字段都将添加约束,这就是为什么它在各个列中起作用,并且主键的唯一性是此处两个字段的组合
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。