看到很多朋友都一直在问这个问题,每个数据库都要像作者索求反安装代码,这样有两点不好:
1. 会让作者感觉很难过,自己辛苦写的插件不被认同;
2. 每一个想要反安装的插件都向作者要...是不是很麻烦?
那么就教你如何自己学会反安装数据库的升级代码.
原创: oytktk(靖飒)
按情况, 数据库的升级代码可以分三个类别:
1. 建立一个或多个数据表;
2. 建立一个或多个字段;
3. 添加一个或多个字段的值;
针对以上情况,我们应该怎么判断我们升级的数据库代码属于哪一种类型的呢?
好让我们拿我的作品<鲜花鸡蛋送给作者>来说吧, 这个插件就要用到上面的前两个类别,让我们先来看看第一类:
一、 建立一个表:
- CREATE TABLE `cdb_felog` (
- `id` mediumint( 20 ) unsigned NOT NULL AUTO_INCREMENT ,
- `fromuser` varchar( 15 ) NOT NULL default '',
- `touser` varchar( 15 ) NOT NULL default '',
- `asfe` varchar( 8 ) NOT NULL default '',
- `score` int( 10 ) NOT NULL default '0',
- `tid` varchar( 15 ) NOT NULL default '',
- `aswhat` varchar( 100 ) NOT NULL default '',
- PRIMARY KEY ( `id` )
- ) TYPE = MYISAM
复制代码
判断依据: 以 CREATE TABLE 开头,后面跟数据表的名字: CDB_XXX
结束标致: TYPE = ……
这类就属于上述的第一个类别:添加一个数据表!
反安装方法:
方法简述:这类升级代码的反安装方法很简单,不管这个表有多大,你可需要用DROP TABLE后跟数据表的名字即可,例如我的鲜花鸡蛋插件以上的升级代码,反安装的代码如下:
二、建立一个或多个字段:
1)
- ALTER TABLE `cdb_posts` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
- ALTER TABLE `cdb_posts` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
- ALTER TABLE `cdb_threads` ADD `flower` INT(10) DEFAULT '0' NOT NULL;
- ALTER TABLE `cdb_threads` ADD `egg` INT(10) DEFAULT '0' NOT NULL;
复制代码
或:
2)
- ALTER TABLE `cdb_members` ADD `putsum` INT( 8 ) NOT NULL ,
- ADD `audsum` INT( 8 ) NOT NULL ,
- ADD `groomsum` INT( 8 ) NOT NULL ,
- ADD `delesum` INT( 8 ) NOT NULL ,
- ADD `audit` VARCHAR( 1 ) NOT NULL ;
复制代码
判断依据: 以 ALTER TABLE 开头,后面跟数据表的名字: CDB_XXX,再跟 ADD,再跟字段的名称!
注意事项: 这类升级代码有种简写的方式,如果升级一个表内的字段多于一个,就可以用简化方式写
以上1)升级代码是完整的写法,2)最简写;
两者的区别就在于不用多写 ALTER TABLE `数据表`
在同一个数据表里升级两个或以上的字段,就可以使用这种升级方式了。
反安装方法:
1)
- ALTER TABLE `数据表1` DROP `字段名1`;
- ALTER TABLE `数据表2` DROP `字段名1`;
复制代码
2)
- ALTER TABLE `数据表`
- DROP `字段名1`,
- DROP `字段名1`,
- DROP `字段名1`;
复制代码
方法简述:不管是第一个方法还是第二种方法,都可以完成对添加字段的反安装
只要把“数据表1"的名字替换成添加字段的表“CDB_XXX",再把“字段名1”替换成添加的字段名(ADD后的名字)。
例子:
以上1)的反安装代码为:
- ALTER TABLE `cdb_posts` DROP `flower;
- ALTER TABLE `cdb_posts` DROP `egg`;
- ALTER TABLE `cdb_threads` DROP `flower`;
- ALTER TABLE `cdb_threads` DROP `egg`;
复制代码
2)的反安装代码为:
- ALTER TABLE `cdb_members` DROP `,
- DROP `audsum`,
- DROP `groomsum` ,
- DROP `delesum` ,
- DROP `audit` ;
复制代码
其实大家仔细观察一下就可以看出来,这类反安装代码其实就是把升级代码中的ADD改为DROP,并把字段名后的部分代码删除即可。
三、添加一个或多个字段的值:
- INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('attaopen', '1');
- INSERT INTO `cdb_settings` (`variable`, `value`) VALUES ('attacoun', '15');
复制代码
这类升级代码很少用,一段是用在SETTINGS表里。
其标致为:以INSERT INTO开头,后面是数据表的名字,第一个括号里面的是要加给值的字段名,第二个括号里的值是与第一个括号里对应的,分别是加到第一个括号里字段里的。
反安装代码:
- DELETE FROM `cdb_settings` WHERE `variable` = 'attaopen' AND `value` = '1' ;
- DELETE FROM `cdb_settings` WHERE `variable` = 'attacoun' AND `value` = '15' ;
复制代码
方法简述:
先将升级代码中的INSERT INTO改为DELETE FROM, 在第一个括号前加个“ WHERE ”,然后是第一个括号里的值“variable”,再加“=”号,再加第二个括号里的第一个值“attaopen”,如果括号里的值不止一个,那再加“ ADD ”,再加第一个括号里的第二个值“value”,再加“=”号,再另第二个括号里的第二个值“1”,如果还有更多那就再加“ADD”再加第一个括号里的第三个……
这就是数据库反安装的基本方法。希望大家认真掌握自己动手进行数据库的反安装!
[ 本帖最后由 oytktk 于 2007-8-24 09:08 编辑 ] |