This Domain(Admin5.com) is for Sale:

PEAR MDB 数据库抽象层 —— 一次编写—随处运行

时间:2007-12-23  来源:不详  作者:迈克DB


Listing 4

php"><table><name>users</name><initialization><insert><field><name>user_id</name><value>1</value></field><field><name>handle</name><value>default</value></field><field><name>is_active</name><value>Y</value></field></insert></initialization></table> 本文来自织梦 


如你从上个例子中能看到的那样,所有我们需要做的就是给表的每个域设定值。我们现在已经知道了必要的基础知识来创建一个 MDB 的 XML schema。下一步是把这个 schema 文件传递给 MDB 治理器。

php">$manager = new MDB_Manager;$input_file = 'auth.schema';// we do not have to connect to a specify a specific database at this time$dsn = "mysql://$user:$pass@$host";$manager->connect($dsn);$manager->updateDatabase($input_file, $input_file. '.before'); 

copyright dedecms



我们现在有了一个新的名字叫 auth 的,它有一个表叫 users。在域 user_id 有一个索引。而且在表中还有一行。我们还有一个序列称为 users_user_id,它将被初始化为 1。因此序列中的下一个值就是 2。最后,schema 的一个拷贝以名字auth.schema.before 被创建。这是因为我们给 MDB_Manger::updateDatabase() 传递了可选的第二个参数。在下一节我们将看到为什么要创建这个拷贝。

所有这些都非常令人惊异但是它变得更好。许多情况下程序需要在某些地方作出改变。例如我们可能决定需要把表的名字从 users 变成 people。我们可能还需要增加一个域 pwd 来储存密码域(请检查 textbox 的保留字)。


保留字

我们没有称那个域为 password 的原因是那是 Interbase 中一个域名的保留字。因为我们需要 RDBMS 独立,MDB 治理器要么给出一个警告要么在 fail_on_invalid_names 选项被设置为真的时候(这是缺省值)失败。

在过去的时候,你可能现在正处于把你所有已经有的东西变成这种新的 schema 的痛苦之中。但是由于 MDB 这些工作能够自动完成。在 listing 5 中是我们对我们的表格定义进行的修改:

Listing 5

php"><table><name>people</name><was>users</was><declaration><field><name>pwd</name><type>text</type><length>32</length><notnull>1</notnull><default></default></field></declaration></table> dedecms.com 


现在我们想要治理器来作出必要的改变,但是在此之前我像提一下可能的陷阱。因为我们把表从 users 更名为 people,我们还需要把所有对原来名字的引用进行更改,比如我们建立的序列。在 on 标签中的索引需要更改为指向 people 表。为了达到这个目的,我们把 shcema 的新旧版本传递给治理器。这酒是为什么我们在第一次调用 MDB_Manager::updateDatabase() 时我们创建一个 .before 文件的原因。这确保了我们有一个旧版本的 shcema 来与新的版本进行比照。

php">$input_file = 'auth.schema';$manager->updateDatabase($input_file, $input_file.'.before');

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息