12
返回列表 发新帖
楼主: xinylq

如何实现sequence的代码

[复制链接]
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:19:07
11#
 楼主| 发表于 2003-7-9 17:24 | 只看该作者
各位,有谁知道在oracle中如何控制事务并发???

使用道具 举报

回复
论坛徽章:
0
12#
发表于 2003-7-9 19:53 | 只看该作者

Hello, Not good

Use Sequence is bright idea,why want to use another,think it's senseless

使用道具 举报

回复
论坛徽章:
0
13#
发表于 2003-7-11 13:48 | 只看该作者

Re: 这样就可以了

最初由 oracle2003 发布
[B]insert into test(id)
  values((select max(id) + 1 from test)) [/B]


老兄,这样做不行的。
在oracle中是事务级处理,在一个事务中不commit得数据再另外一个事务中是看不到的。
比方说事务A做了这件事insert into test(id)
  values((select max(id) + 1 from test 而没有提交,这时候事务B也做了这样的事,那么事务A和事务B得id都是相同得,这样会引发重复错误

使用道具 举报

回复
论坛徽章:
0
14#
发表于 2003-7-31 16:38 | 只看该作者
如何实现类似在SQL SERVER 的功能如下:
create table USERS                  
(
       ID            integer(4)
                        unsigned default '0' not null auto_increment,
        USERNAME          char(20) not null     
);
ID也能不用自动维护,比如我们只需要
INSERT INTO USERS
VALUES ('TEST'); 系统就可以自动插入ID的值?

使用道具 举报

回复
论坛徽章:
0
15#
发表于 2003-7-31 16:42 | 只看该作者
可以维护一个表记录最新的ID值,每次先加一再取出该值。

使用道具 举报

回复
论坛徽章:
0
16#
发表于 2003-7-31 17:04 | 只看该作者
问题是需要象SQL SERVER 一样,ID不要自己维护!
应用程序只需要写:
INSERT INTO USERS (USESNAME)
VALUES ('TEST');

使用道具 举报

回复
论坛徽章:
4
授权会员
日期:2005-10-30 17:05:33会员2006贡献徽章
日期:2006-04-17 13:46:34慢羊羊
日期:2015-03-04 14:19:442015年新春福章
日期:2015-03-06 11:57:31
17#
发表于 2003-7-31 23:12 | 只看该作者
why not use 'select .. for update' ?

使用道具 举报

回复
论坛徽章:
0
18#
发表于 2003-8-2 12:28 | 只看该作者
找到了实现的办法:
SQL> create table USERS ( ID int primary key, USERNAME varchar(9) );

表已创建。
SQL> create trigger USERS_trigger before insert on USERS for each row
  2  begin
  3     if ( :new.ID is null ) then
  4        select test.nextval into :new.ID from dual;
  5     end if;
  6  end;
  7  /

触发器已创建

SQL> insert into users (USERNAME ) values ('test');

已创建 1 行。

SQL> select * from users;

        ID USERNAME
---------- ---------
        1  test

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
19#
发表于 2003-8-3 23:27 | 只看该作者

最好,最便捷的办法还是用SEQUENCE

我认为

使用道具 举报

回复
论坛徽章:
1
授权会员
日期:2005-10-30 17:05:33
20#
发表于 2003-8-3 23:29 | 只看该作者

触发器对于大型数据库

尤其是在数据库记录更新频繁的情况下,慎用触发器,她会降低数据库性能,会发生瞬间查询很慢的情况.如果前台再加个应用服务器就更麻烦了.

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表