免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 夜猫子
打印 上一主题 下一主题

[转贴]已经过了两年了,不知道结论还正确吗? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2003-03-18 22:39 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

楼上朋友。首先你真正用过事务处理的数据器吗?
你没用过,自然不知,外键,触发器,视图.....有多方便.

drop table taba;
create table taba(
id integer,
name varchar(50)
);
insert into taba values(1,'chen');
insert into taba values(2,'chen');
insert into taba values(3,'chen');
insert into taba values(4,'chen');
insert into taba values(5,'chen');
insert into taba values(6,'chen');
insert into taba values(7,'chen');
select * from taba;


drop table tabb;
create table tabb(
id integer,
name varchar(50)
);
insert into tabb values(1,'chen');
insert into tabb values(2,'chen');
insert into tabb values(3,'chen');
insert into tabb values(4,'chen');
insert into tabb values(5,'chen');
insert into tabb values(6,'chen');
insert into tabb values(7,'chen');
select * from tabb;

drop function delete_tab ();
CREATE FUNCTION delete_tab () RETURNS opaque AS '
--  DECLARE
  BEGIN
    Delete from tabb where id = OLD.id;   
    RETURN NEW;
  END;
' LANGUAGE 'plpgsql';

drop TRIGGER delete_tri on taba;
CREATE TRIGGER delete_tri
       BEFORE Delete
       ON taba FOR EACH ROW
       EXECUTE PROCEDURE delete_tab ();

delete from taba where id = 2;
select * from tabb;

当表taba 中删除一条数据中。tabb中的数据同时被删除。
如果是MYSQL你得在程序中用两条SQL实现。
delete from taba where id = 2;
delete from tabb where id = 2;

view 可以省去你在读表时烦琐。
pgsql:select * from view where id =1
mysq:select  t1.id,t2.uid,t3.name,t4.pass,t5.email from t1,t2,t3,t4,t5 where t1.id=1 and t2.id=1 and

t3.id =1 and t4.id =1 and t5.id =1

过程,函数。
adduse(integer,integer)
begin
    insert into user values($1,$2);
    ......
end;
exec adduser('user1','passwd');

事务
begin
    step 1
    step 2
    ...
    step 10
commit;
如果任何一步出错。事务被取消,即。去银行取¥。
1插卡
2密码
4取多少¥¥¥
5在帐号里扣除¥
6出钱
7退卡
如果没有事务处理。5出错。你的¥没了。6没出来¥。7退卡。你再一看。卡里原5000¥现在成了2000¥。银行不诚认。你自己哭吧。
这种环境MySQL不行。

外键。没有外键参考。插入,删除的数据可能不一至。

不多说了。。自己想想吧。

论坛徽章:
0
12 [报告]
发表于 2003-03-18 22:53 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

...

我想 redfox 老大说得很清楚了,对于简单网页应用,他不需要;对于复杂、并且同步性要求很高的的BS结构中会用到。

就象 ChinaUnix.net 偶而出现 phpBB: Critical Error 虽然很烦人,但不会象银行帐户问题那么严重。再极端一点,Oracle 很强,但是我需不需要用它来处理我的通讯录呢?Oh no, thanks! 我想一个 EXCEL 或是 Gnumeric 就能满足我的要求了。

我认为,他的说法很有道理 —— 不是档次问题而是定位问题。

论坛徽章:
0
13 [报告]
发表于 2003-03-19 00:04 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

要用就用最好的,最牛B的,这样才不算菜鸟啊!

论坛徽章:
0
14 [报告]
发表于 2003-03-19 00:05 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

其实很多事情都是这样。
我们总是在寻找所谓“最好的”,倒还不如好好考虑一下什么才是“最合适的”。

论坛徽章:
5
荣誉会员
日期:2011-11-23 16:44:17CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-09-18 15:15:45未羊
日期:2014-02-25 14:37:19射手座
日期:2014-12-26 22:55:37
15 [报告]
发表于 2003-03-19 21:28 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

说实在,MYSQL已经支持外件了,至于触发器,我们再生产系统中的INFORMIX都不用这个东西。

论坛徽章:
0
16 [报告]
发表于 2003-04-01 09:09 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

[quote]原帖由 "wolfop"]说实在,MYSQL已经支持外件了,至于触发器,我们再生产系统中的INFORMIX都不用这个东西。[/quote 发表:


不用触发器的生产系统,或者你的系统太小,或者你的构架不好。

论坛徽章:
0
17 [报告]
发表于 2003-04-01 12:00 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

回楼上。。
因为你是程序员,不是DBA。。
我认为你对数据的认识,比对FOXBASE认识多不了多少。。
目前国内的项目人员。都对数据库认识不足。这些项目人员,之前都是程序员。。。干到30岁做就项目经理。。
这些人,给它Oracle。他的用法与MySQL一样,外建VIEW全不用。
只用select,insert ,update OK了,就可以做项目了。CRM,ERP,OA,。。。。。。

我在深圳干了三年,换了不少公司。大到几百人,小到三五人。。都一样很少公司有专业的DBA。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
18 [报告]
发表于 2003-04-01 12:25 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

原帖由 "netkiller" 发表:


因为你是程序员,不是DBA。。
我认为你对数据的认识,比对FOXBASE认识多不了多少。。
目前国内的项目人员。都对数据库认识不足。这些项目人员,之前都是程序员。。。干到30岁做就项目经理。。
这些人,给它Oracle。他的用法与MySQL一样,外建VIEW全不用。
只用select,insert ,update OK了,就可以做项目了。CRM,ERP,OA,。。。。。。

我在深圳干了三年,换了不少公司。大到几百人,小到三五人。。都一样很少公司有专业的DBA。


同意你的观点,这也是国内项目开发流程不完善和不规范造成的,很多人都是身兼多职,虽然能锻炼能力,但是也造成角色的非专业化.

不过是否通过触发器还是通过应用来维护表数据间的逻辑关系,我觉得并不是绝对的,各有各的优缺点.

论坛徽章:
5
荣誉会员
日期:2011-11-23 16:44:17CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-09-18 15:15:45未羊
日期:2014-02-25 14:37:19射手座
日期:2014-12-26 22:55:37
19 [报告]
发表于 2003-04-01 17:09 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

原帖由 "wangrujun" 发表:

不用触发器的生产系统,或者你的系统太小,或者你的构架不好。

得了吧,少吹了。不是系统太小,而是系统太大,我用4台PC SERVER支持600万用户的系统,谁敢乱用触发器。要上的新系统倒是两台690,不过数据库容量20T,而且不是DSS,OLTP和批处理混和,你用触发器看看。

论坛徽章:
5
荣誉会员
日期:2011-11-23 16:44:17CU大牛徽章
日期:2013-09-18 15:15:15CU大牛徽章
日期:2013-09-18 15:15:45未羊
日期:2014-02-25 14:37:19射手座
日期:2014-12-26 22:55:37
20 [报告]
发表于 2003-04-01 17:17 |只看该作者

[转贴]已经过了两年了,不知道结论还正确吗?

原帖由 "netkiller" 发表:
回楼上。。
因为你是程序员,不是DBA。。
我认为你对数据的认识,比对FOXBASE认识多不了多少。。
目前国内的项目人员。都对数据库认识不足。这些项目人员,之前都是程序员。。。干到30岁做就项目经理。。
这些人..........

呵呵,只能说你刚道比只会用FOXBASE的人层次高一点。知道触发器,VIEW的方便性,接触过多大的系统,而且是资金有限的系统。用VIEW 用触发器如何,我知道的系统,两台满配置15K,触发器、VIEW都用,可是系统的数据量和业务量都比我们用4台PC Server的要少,怎么了,崩溃的频繁程度还有反应速度等指标都比我不用触发器的要慢。一个DBMS+应用的设计,不是看是否用VIEW、是否用外键、是否用触发器衡量的,尤其对我这种甲方的人来说,我只关心系统的稳定性、反应时间和处理能力。
因此,不论黑猫白猫,抓道耗子就是好猫。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP