无法使用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 - "价值不够"
答案 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)
在插入时检查列数。