响水凹

欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki

用户工具

站点工具


computer:perl:museums-insert

另一个数据库插入例子museums-insert.pl

这是另一个向Oracle数据库插入数据的例子,与institutions-insert.pl相同的部分不再描述。

表结构

除了表Institutions,另一张表是:

CREATE TABLE Museums
(
        museum_id       VARCHAR2(128 CHAR) NOT NULL,
        name_cn         VARCHAR2(128 CHAR) NOT NULL,
        name_en         VARCHAR2(512 BYTE),
        address_cn      VARCHAR2(256 CHAR),
        address_en      VARCHAR2(1024 BYTE),
        website_cn      VARCHAR2(128 CHAR),
        website_en      VARCHAR2(512 BYTE),
        desc_cn         VARCHAR2(1000 CHAR),
        desc_en         VARCHAR2(4000 BYTE),
        institution_id  NUMBER(10) NOT NULL
);
ALTER TABLE Museums ADD CONSTRAINT Museums_primary_key
        PRIMARY KEY(museum_id);
ALTER TABLE Museums ADD CONSTRAINT MuInsId_must_in_ins
        FOREIGN KEY(institution_id) REFERENCES Institutions(institution_id);

代码简述

表Museums与Institutions有外键约束。在插入Museums之前,需要先查询Institutions,结果放在哈希变量里:

my $sth = $dbh->prepare( q{
    SELECT institution_id, name_cn FROM Institutions
    }) or die "Can't prepare statement: $DBI::errstr";
 
my $rc = $sth->execute
    or die "Can't execute statement: $DBI::errstr";
 
my %ins_ids;
while (my ($id, $name) = $sth->fetchrow_array) {
    $ins_ids{$name} = $id;
}

后续就是同样的插入操作了,只是部分数据来自之前的查询结果:

        if (!$flag) {
            $sth->execute($museum_id, $name_cn, $name_en, $website_cn,
                            $website_en, $ins_ids{$ins_name});
        }

完毕。

computer/perl/museums-insert.txt · 最后更改: 2014/11/01 02:02 由 127.0.0.1