新创建的序列器怎么与一个表的一个字段联系起来呢?

[复制链接]
查看11 | 回复8 | 2008-1-2 17:35:53 | 显示全部楼层 |阅读模式
怎么才能让oracle数据库象access一样,表里面有一个自动编号类型的自增量字段呢?听说需要个表加一个序列器,但是增加一个序列器的代码:
create table dep (deptno smallint not null,
deptname varchar2(36) not null,
mgrno char(6),
admrdept smallint not null,
location char(30));
create sequence dept_seq start with 200 increment by 1;//键序列

insert into dept values
(dept_seq.nextval,'sales','smith',55,'downtown'),
(dept_seq.nextval,'marketing','wong',12,'midtown'),
(dept_seq.nextval,'accounting','fisher',300,'uptown');
增加的序列器似乎跟创建的表一点关系都没有,即没有指定是哪一个表,也没有指定是哪一个字段,这怎么可行呢?而且我照做之后插入记录的运行一点作用也没有呀???
请问具体要怎么做呢?麻烦请说详细些!
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
是不同的,想SYBASE就有如同ACCESS一样自动递增的字段类型,而在ORACLE中,必须要人工对该字段进行干预控制。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
还是不明白,如果做了序列还要人工干预的话,那要序列干啥用的呢?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
它是自动递增的,不需要你去对它记数累加了,但你必须引用它才行。
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
如何应用?
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
最初由 hamer 发布
[B]还是不明白,如果做了序列还要人工干预的话,那要序列干啥用的呢? [/B]

序列能防止出现重复的值呀,可能你觉得每次自己加1不就完了,但你想过没有两个人同时对同一记录的字段(例如:ID)加1,就会产生问题。而用序列就不会
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
如果你在新增记录时一定要自动将某个字段从sequence中取值的话,可以用触发器实现
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
Oracle的Sequence应用相比其它数据库的自增字段来说使用是最方便的
回复

使用道具 举报

千问 | 2008-1-2 17:35:53 | 显示全部楼层
dept_seq.nextval 要获得下一个可用的序列号
回复

使用道具 举报

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

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行