1

複合主キーを持つこのテーブルがあります。

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") 

「キー「comune」のエントリ「Padova」が重複しています」と表示されます。しかし、comune だけではプライマリではないでしょうか。

4

1 に答える 1

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") ;

ライブ SQL フィドル

于 2013-06-04T14:14:44.443 に答える