多个主键

时间:2013-06-04 13:51:31

标签: mysql primary-key

我的这个表有一个复合主键:

create table mercati(
ubicazione varchar(20) not null,
giorno ENUM('LU','MA','ME','GI','VE','SA','DO') not null,
ora_inizio time not null,
ora_fine time not null,
comune varchar(20) not null,
primary key(ubicazione,comune),
foreign key(comune) references comuni(comune)
)ENGINE=InnoDB;

然后我执行

Insert into mercati values ("liberty square","LU",07:00,13:00,"Padova")

但是当我尝试

Insert into mercati values ("Corso Australia","LU",07:00,13:00,"Padova") 

它表示“重复输入'Padova'用于关键'comune'”。 但仅靠公社不是主要的,不是吗?

1 个答案:

答案 0 :(得分:0)

我认为你应该改变你的表结构并添加一个带有auto_increment

的整数列作为主键
create table mercati(
id int(10) NOT NULL AUTO_INCREMENT,
ubicazione varchar(20) not null,
    giorno ENUM('LU','MA','ME','GI','VE','SA','DO') not null,
    ora_inizio time not null,
    ora_fine time not null,
    comune varchar(20) not null,
    primary key(id),
    foreign key(comune) references comuni(comune)
)ENGINE=InnoDB;

现在您可以插入没有问题的数据

Insert into mercati (ubicazione, giorno, ora_inizio, ora_fine, comune) values ("liberty square","LU",'07:00','13:00',"Padova");
Insert into mercati (ubicazione, giorno, ora_inizio, ora_fine, comune) values ("Corso Australia","LU",'07:00','13:00',"Padova") ;

Live Sql Fiddle