使用自增主键维护起来方便. 如果不使用自增主键,必须自己写函数来取最大值,例如:
select max(colname)+1 from tablename
但是会引发并发的问题. 如果使用序列,基本不用考虑并发的问题。
select max(colname)+1 from tablename
但是会引发并发的问题. 如果使用序列,基本不用考虑并发的问题。
解决方案 »
- 请教一个问题?
- 用OCI涵数连接ORACL的时候,那个参数决定了可以访问那个SKIM.
- 各位大牛,分区数据库操作出错,ORA-14400,请指点一下小弟,我到底错在哪里?
- 在oracle-SQL PLUS中,数据库、管理表空间和新用户的建立顺序
- 这样的SQL语句怎么写?
- Enterprise manager 打开的时候默认的数据库的问题
- Oracle8.1.5下用DBASSIST创建数据库失败,错误号ORA-01501
- 如何按这种要求导出导入所有的表
- 我用PowerDesigner10和ER/Studio6.5的反向工程都不能得到视图的Trigger,为什么?
- 在线等 oracle配置问题
- 创建数据库错误,请近来看看了!!!
- 多媒体存储求助
使用自增主键用触发器的话是不是影响数据库的性能
----------------------------------------------
会影响性能,你可以写两个测试程序,一个用触发器,一个
用序列.nextval,后者速度快.
oracle 自增字段第一步:创建SEQUENCE
create sequence s_country_id increment by 1 start with 1 maxvalue 999999999;第二步:创建一个基于该表的before insert 触发器,在触发器中使用该SEQUENCE
CREATE OR REPLACE TRIGGER 名
BEFORE INSERT ON 表
REFERENCING OLD AS old NEW AS new
FOR EACH ROW
BEGIN
SELECT s_country_id.NEXTVAL INTO :new.列名 FROM dual;
END T_A_MemberShipI
时就不需要考虑自增列了, 这一步工作可以手工完成。
例如: insert into tablename(id,col1,col2...)
values s_country_id.nextval,val1,val2...