我以前是用SqlServer的,在SqlServer中数据表有自增字段,因此我就用自增字段作为表的主键
也很好建立关系,现在在Oracle中没有了自增字段在设计数据库中很不方便,在网上一些方法也
主要是叫我用序列和触发器来实现自增字段,但问题又出来了就是编程时向数据库中插入数据的
时候有时候不是将数据插入在表的最后一行以后,有时候是从中间的一行后插入的,这就是所谓的
无序性,这给编程带来了很多不便,这这样解决?
请问各位大虾你们是怎么设计数据库的?最好付上代码-- Create table
create table worksum_yuangong
(
yid number not null,
realname varchar2(20),
danwei varchar2(20),
adminflag varchar2(20),
pwd varchar2(20),
username varchar2(20)
)
tablespace TEST
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table worksum_yuangong
add constraint worksum_yuangong_key primary key (YID);
-- Create sequence
create sequence worksum_yuangong_SEQ
start with 1
increment by 1
maxvalue 999999999999999999999999999;
-- create id_up trigger
create or replace trigger worksum_yuangong_YID
before insert on worksum_yuangong
for each rowbegin
select worksum_yuangong_SEQ.nextval into :new.yid from dual;
end;
/
-- create upd trigger
create or replace trigger worksum_yuangong_UPDATE
before update of YID on worksum_yuangong
for each rowbegin
raise_application_error(-20000,'你不能更新主键!');
end worksum_yuangong_UPDATE;
/
也很好建立关系,现在在Oracle中没有了自增字段在设计数据库中很不方便,在网上一些方法也
主要是叫我用序列和触发器来实现自增字段,但问题又出来了就是编程时向数据库中插入数据的
时候有时候不是将数据插入在表的最后一行以后,有时候是从中间的一行后插入的,这就是所谓的
无序性,这给编程带来了很多不便,这这样解决?
请问各位大虾你们是怎么设计数据库的?最好付上代码-- Create table
create table worksum_yuangong
(
yid number not null,
realname varchar2(20),
danwei varchar2(20),
adminflag varchar2(20),
pwd varchar2(20),
username varchar2(20)
)
tablespace TEST
storage
(
initial 64K
minextents 1
maxextents unlimited
);
-- Create/Recreate primary, unique and foreign key constraints
alter table worksum_yuangong
add constraint worksum_yuangong_key primary key (YID);
-- Create sequence
create sequence worksum_yuangong_SEQ
start with 1
increment by 1
maxvalue 999999999999999999999999999;
-- create id_up trigger
create or replace trigger worksum_yuangong_YID
before insert on worksum_yuangong
for each rowbegin
select worksum_yuangong_SEQ.nextval into :new.yid from dual;
end;
/
-- create upd trigger
create or replace trigger worksum_yuangong_UPDATE
before update of YID on worksum_yuangong
for each rowbegin
raise_application_error(-20000,'你不能更新主键!');
end worksum_yuangong_UPDATE;
/
在Oracle中就是用序列+触发器来做自增字段的。