我为什么收到"没有足够的价值"什么时候运行INSERT?

时间:2016-10-11 14:43:04

标签: sql oracle

无法使用Oracle自动设置我的表中的id值。这是我的触发器:

jms/mdbtest/queue/queue
jms/mdbtest/queue/activespec

我有两列:id,description。但是当我调用insert

create or replace trigger themes_on_insert
before insert on THEME
for each row
begin
   :new.ID := THEMES_SEQ.nextval;
end;

它给了我

  

错误报告:   SQL错误:ORA-00947:值不够   00947. 00000 - "价值不够"

5 个答案:

答案 0 :(得分:4)

您没有指定要为其提供值的列,因此数据库需要表中每个列的值。

假设该表中有一列name,您需要这样做:

insert into theme (name) values('Sport');

不在INSERT语句中列出目标列是错误的编码风格。

答案 1 :(得分:3)

只需确保为您指定值的列命名。

insert into theme (description) values('Sport');

答案 2 :(得分:2)

如果你没有指定colnames,在insert语句中,数据库将假定你给出了所有列的值。

所以:

insert into theme (col_name) values ('Sport');

答案 3 :(得分:1)

如果Trigger不是强制性的,您只需使用以下

即可
 insert into theme values(THEMES_SEQ.nextval,'Sport');

答案 4 :(得分:0)

在插入时检查列数。