Sql 为什么我会收到;没有足够的价值观”;运行插入时?
无法获得正确的方法来使用Oracle自动设置我的表中的id值。这是我的扳机: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
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');