Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 为什么我会收到;没有足够的价值观”;运行插入时?_Sql_Oracle - Fatal编程技术网

Sql 为什么我会收到;没有足够的价值观”;运行插入时?

Sql 为什么我会收到;没有足够的价值观”;运行插入时?,sql,oracle,Sql,Oracle,无法获得正确的方法来使用Oracle自动设置我的表中的id值。这是我的扳机: create or replace trigger themes_on_insert before insert on THEME for each row begin :new.ID := THEMES_SEQ.nextval; end; 我有两列:id、description。但当我打电话时 insert into theme values('Sport'); 它给了我 错误报告: SQL错误:ORA-0

无法获得正确的方法来使用Oracle自动设置我的表中的id值。这是我的扳机:

create or replace trigger themes_on_insert
before insert on THEME
for each row
begin
   :new.ID := THEMES_SEQ.nextval;
end;
我有两列:id、description。但当我打电话时

insert into theme values('Sport');
它给了我

错误报告: SQL错误:ORA-00947:值不足 94700000-“没有足够的值”


只需确保为指定值的列命名即可

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

您没有指定要为其提供值的列,因此数据库希望表中的每一列都有一个值

假设该表中有一列
名称
,则需要执行以下操作:

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

INSERT
语句中未列出目标列是一种糟糕的编码方式。

如果不在INSERT语句中指定colname,数据库将假定您为所有列提供了值

因此:


如果触发器不是强制性的,您可以简单地使用以下命令

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

插入时检查列数

错误只是告诉您,
values
子句中没有包含足够的值。因为您没有指定要插入的列,所以它希望每一列都出现在
values
子句中,而它现在最喜欢的情况不是这样。
 insert into theme values(THEMES_SEQ.nextval,'Sport');