PLSQL Developer 向表主键添加序列 不用代码怎么做

PLSQL Developer 向表主键添加序列 不用代码怎么做,第1张

这个还真不好做,

一般在写代码时,先取出序列的nextval,放到insert语句中去;

比如:

ida := seq_a.nextval

insert into taba(id,value,...) values(ida,'abc',...)

或者在insert语句中直接使用序列的nextval:

insert into taba(id,value,...) values(seq_a.nextval,'abc',...)

或者用触发器实现自增长:

比如表名:tab,主键为:id

1. 增加一个序列号: create sequence seq_tab

2. 增加一个触发器,如果是insert,则取序列号值,赋予主键列

CREATE OR REPLACE TRIGGER TRI_tab

BEFORE INSERT ON tab FOR EACH ROW

DECLARE

-- LOCAL VARIABLES HERE

BEGIN

IF :NEW.id IS NULL THEN

SELECT SEQ_tab.NEXTVAL INTO :NEW.id FROM DUAL

END IF

END TRI_tab

两个方法:

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')

INSERT时如果要用到从1开始自动增长的数字做唯一关键字, 应该先建立一个序列号.CREATE SEQUENCE 序列号的名称 (最好是表名+序列号标记) INCREMENT BY 1 START WITH 1 MAXVALUE 99999 NOCYCLE NOCACHE其中最大的值按字段的长度来定,比如定义的自动增长的序列NUMBER(6) , 最大值为999999INSERT 语句插入这个字段值为: 序列号的名称.NEXTVAL例子: SQL>insert into s_dept(id, name, region_id) values (s_dept_id.nextval, ‘finance’, 2)1 row created.只有运行了序列号的名称. nextval后序列号的名称. currval 才有效才有值.


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11394539.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存