oracle怎么删除自增,oracle insert自增

oracle怎么实现id自增和设置主键啊

可以使用序列实现id自增,主键的语法为primary key。

遵化网站建设公司创新互联,遵化网站设计制作,有大型网站制作公司丰富经验。已为遵化上千多家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的遵化做网站的公司定做!

当一个序列第一次被查询调用时,它将返回一个预定值。在随后的每次查询中,序列将产生一个按指定的增量增长的值。序列可以循环,或者是连续增加的,直到指定的最大值为止。

创建序列语法如下:create sequence [模式]序列名称[start with 起始数字] [increment by 增量][maxvalue 最大值|nomaxvalue][minvalue 最小值|nominva lue][cycle|nocuyle][cache 数目|nocache][order|noorder]。

具体代码示例如下:

创建表      

create table book(     

bookId varchar2(4) primary key, 

name varchar2(20)       

); 

创建序列   

create sequence book_seq start with 1 increment by 1;

创建触发器   

create or replace trigger book_trigger     

before insert on book     

for each row     

begin     

select book_seq.nextval into :new.bookId from dual;

end ; 

添加数据   

insert into book(name)  values ('cc'); 

insert into book(name)  values ('dd'); 

commit;

扩展资料:

在数据表中,有时候需要主键值自动增加,但在Oracle数据库中,没有象Mysql的Autoincrement一样自动增长的数据类型。在实现Oracle数据库字段自增功能时,利用DML触发器来完成。

触发器(trigger)是一些过程,当发生一个特定的数据库事件时就执行这些过程,可以使用触发器扩充引用的完整性。DML即数据操纵语言,用于让用户或程序员使用,实现对数据库中数据的操作。基本的数据操作分成两类四种:检索(查询)和更新(插入、删除、修改)。

触发器类似于函数和过程,其在数据库中以独立身分存在。触发事件可以是对数据库表的DML(insert、update或delete)操作等。

如何解决oracle delete表自增id太大问题

如果要实现这种的话,用自增主键好像就是实现不了吧。要是这样的话,那不用主键自己插入。每一次都取最大条数+1呗。

oracle数据库,怎么给已有很多数据的表填充自增序列字段

两个方法:

1,重新创建一个表,然后创建一个序列,把老数据导入新表,删除老表,修改新表名字为老表

2,直接在原来表上增加一个字段,创建一个序列,通过更新的方式修改老数据的这个字段。

具体操作主要是2点,首先是创建一个序列名sequence;

然后是,insert语句的时候:将自增的字段的位置,写成序列名.nextval。

从创建表开始,然后创建sequence,到insert语句

1.首先创建表

CREATE TABLE "FLOWCAL"."T_USERINFO"

( "C_ID" NUMBER(*,0),

"C_USER" VARCHAR2(20 BYTE),

"C_PASSWORD" VARCHAR2(20 BYTE),

"C_ROLE" VARCHAR2(20 BYTE),

"C_COMMENT1" VARCHAR2(20 BYTE),

"C_COMMENT2" VARCHAR2(20 BYTE)

)

现在想让C_ID自增一。

2.首先创建一个oracle的sequence,sql语句如下:

create sequence 序列名

increment by 1

start with 1

maxvalue 999999999

cycle;

建立一个最小为1,最大为999999999的一个序列号会自动循环的序列

下面的sequence,如下:

CREATE SEQUENCE "FLOWCAL"."SEQ_USERINFO"

MINVALUE 0

MAXVALUE 9999999999999999999999999999

INCREMENT BY 1

START WITH 24

CACHE 20

ORDER

CYCLE ;

3.通过序列名.nextval实现插入时,字段的自增一

当向表中插入数据时,SQL语句写法如下:

SQL insert into 表名 values(,列1值,列2值,....);

"序列名"可以替换为自己需要的名字.

下面insert语句:

insert into T_USERINFO values(SEQ_USERINFO.NEXTVAL,'111','11','11','11','11')

oracle 主键自增重复

解释如下\r\nt.* -----表示查询表t 所有字段\r\nt.rowid---表示唯一标识t表中的物理位置字段(伪列),这个字段是每个表中都默认有的,当设计表时没有设置主键或唯一标实的时候,也可吧他动作表的唯一标示(删除重复数据可用到)\r\nPU.YK---表示查询的是用户名为PU下的YK表,如果是以PU用户登陆的数据库,PU也可以省略\r\nt---PU.YK 表的别名,用于书写的时候方便简单,与PU.YK 完全相同,只是名字不同而已,就行你的学名和你的小名一样。 \r\n整个语句的意思也很简单,就是查询PU用户下YK表的所有记录信息,以及每条记录对应的ROWID信息 \r\n \r\nrowid是oracle特有的,sqlserver不支持,sqlserver可设置自增字段或唯一标识列代替

关于ORACLE数据库自增的问题

这样的需求感觉只能通过应用程序来实现。但是逐个检查ID,然后找到间隔的,这个开销比较大,不知道要达到什么目的。

我这有两个解决方案:

1、如果ID是为了显示序号,可以在查询的时候使用ROWNUM来实现

2、增加一个FLAG删除标志,删除的时候对FLAG打标记,这样ID就始终是连续的

oracle如何用,序列生成的id主键自增长,再利用id进行删除某行数据

使用序列+触发器创建自增列:

创建序列

-- Create sequence

create sequence SEQ_T_RECV

minvalue 1

maxvalue 9999999

start with 1

increment by 1

cache 50;

创建表

-- Create table

create table RECV_MSG

(

id          NUMBER,

messageid   VARCHAR2(32),

contents    VARCHAR2(2000),

app_flg     VARCHAR2(100),

phonenumber VARCHAR2(2000),

updatetime  DATE default sysdate

);

创建触发器

CREATE OR REPLACE TRIGGER "recv_trig"

BEFORE INSERT ON recv_msg

REFERENCING OLD AS OLD NEW AS NEW FOR EACH ROW

DECLARE

BEGIN

SELECT SEQ_T_RECV.NEXTVAL INTO :NEW.ID FROM DUAL;

END recv_trig;

删除数据

DELETE FROM RECV_MSG WHERE ID=1;


网站名称:oracle怎么删除自增,oracle insert自增
网址分享:http://ybzwz.com/article/dsgcsdo.html