この 2 つのテーブルの間に perl を使用してリレーショナル テーブルを作成し、データを挿入したいと思います。
$create_query = qq{
create table article(
id_article int(10) auto_increment NOT NULL,
url MEDIUMTEXT COLLATE utf8_general_ci,
html_extr_text TEXT COLLATE utf8_general_ci,
concord_file TEXT COLLATE utf8_general_ci,
sys_time VARCHAR(50),
primary key (id_article)
)
};
$dbh->do($create_query);
$create_query = qq{
create table event(
id_event int(10) auto_increment NOT NULL,
event MEDIUMTEXT COLLATE utf8_general_ci,
primary key (id_event)
)
};
$dbh->do($create_query);
リレーショナル テーブルは次のようになります。
$create_query = qq{
create table article_event_index(
id_article int(10) NOT NULL,
id_event int(10) NOT NULL,
primary key (id_article, id_event),
foreign key (id_article) references article (id_article),
foreign key (id_event) references event (id_event)
)
};
$dbh->do($create_query);
「article_event_index」テーブルを埋めるためにperlステートメントがどうあるべきか誰かが知っていますか? 他のテーブルでは、各テーブルに配列を使用します。次のようになります。
my $i_event;
my $id_event = 0;
my @event_index;
for ($i_event = 0; $i_event < @event_prepare; $i_event++){
$dbh->do("
INSERT INTO `event`(`id_event`, `event`)
VALUES ('$id_event', '$event_prepare[$i_event]')
") || die $dbh->errstr;
push @event_index, $i_event;
}
$id_event++;
この場合、'id_event' は $id_event のインクリメントによって生成されます。この ID をインデックス テーブルで再利用したい場合、これは良い方法ですか?