跳至内容
响水凹
欢迎来到 Guang-Wen Duan (Dennis Duan) 的个人 Wiki
用户工具
登录
站点工具
搜索
工具
显示页面
过去修订
反向链接
最近更改
媒体管理器
网站地图
登录
>
最近更改
媒体管理器
网站地图
您的足迹:
computer:perl:museums-insert
本页面只读。您可以查看源文件,但不能更改它。如果您觉得这是系统错误,请联系管理员。
====== 另一个数据库插入例子museums-insert.pl ====== 这是另一个向Oracle数据库插入数据的例子,与[[.:institutions-insert|institutions-insert.pl]]相同的部分不再描述。 ===== 表结构 ===== 除了表Institutions,另一张表是: <code sql> 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); </code> ===== 代码简述 ===== 表Museums与Institutions有外键约束。在插入Museums之前,需要先查询Institutions,结果放在哈希变量里: <code perl> 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; } </code> 后续就是同样的插入操作了,只是部分数据来自之前的查询结果: <code perl> if (!$flag) { $sth->execute($museum_id, $name_cn, $name_en, $website_cn, $website_en, $ins_ids{$ins_name}); } </code> 完毕。 {{tag>Perl}}
computer/perl/museums-insert.txt
· 最后更改: 2014/11/01 02:02 由
127.0.0.1
页面工具
显示页面
过去修订
反向链接
回到顶部