Sha*_*aji 29 sql oracle plsql oracle10g
我有一个workqueue表,其中包含一个workid列.workID列具有自动递增的值.有没有办法在后端运行查询以插入新行并自动增加workID列?
当我尝试插入null时,它会抛出错误ORA01400 - 无法将null插入workid.
insert into WORKQUEUE (facilitycode,workaction,description) values ('J', 'II', 'TESTVALUES')
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么 - 我试着查看表格细节,但没有看到任何自动增量.表脚本如下
"WORKID" NUMBER NOT NULL ENABLE,
Run Code Online (Sandbox Code Playgroud)
数据库:Oracle 10g
一些现有数据的屏幕截图.

回答:
我要感谢每个人和每个人的帮助.今天是一次很棒的学习经历,没有你的支持,我无法做到.最重要的是,我试图在已经有序列和触发器的表中插入一行.我所要做的就是为我的问题找到正确的序列,并将该序列调用到我的查询中.
您提供给我的链接帮助我查看了这些序列,并找到了适用于此workid列的序列.感谢大家,我给大家竖起大拇指,今天我能够解决另一条龙,帮助病人护理向前迈出一步!"
Joh*_*ber 18
要获得自动增量编号,您需要在Oracle中使用序列.(见这里和这里).
CREATE SEQUENCE my_seq;
SELECT my_seq.NEXTVAL FROM DUAL; -- to get the next value
-- use in a trigger for your table demo
CREATE OR REPLACE TRIGGER demo_increment
BEFORE INSERT ON demo
FOR EACH ROW
BEGIN
SELECT my_seq.NEXTVAL
INTO :new.id
FROM dual;
END;
/
Run Code Online (Sandbox Code Playgroud)
Zso*_*Sky 10
这是一种没有任何触发器或序列的简单方法:
insert into WORKQUEUE (ID, facilitycode, workaction, description)
values ((select max(ID)+1 from WORKQUEUE), 'J', 'II', 'TESTVALUES')
Run Code Online (Sandbox Code Playgroud)
我觉得它适合我,但不适用于空桌子.