【问题标题】:Why am I receiving "not enough values" when running an INSERT?为什么我在运行 INSERT 时收到“没有足够的值”?
【发布时间】:2020-03-19 14:10:08
【问题描述】:

无法使用正确的方法在我的 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:没有足够的值 00947. 00000 - “没有足够的值”

【问题讨论】:

  • 这个错误只是告诉你,你没有在values 子句中包含足够的值。由于您没有指定要插入的列,因此它希望每一列都出现在 values 子句中,而现在情况并非如此。

标签: sql oracle


【解决方案1】:

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

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

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

INSERT 语句中未列出目标列是不好的编码风格。

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

      如果你没有指定列名,在你的插入语句中,数据库会假设你给所有列的值。

      所以:

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

      【讨论】:

        【解决方案4】:

        如果Trigger不是强制性的,你可以简单地使用下面的

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

        【讨论】:

          【解决方案5】:

          在插入时检查列数。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-12-29
            • 2022-09-28
            • 2021-12-15
            • 1970-01-01
            • 2020-12-06
            • 1970-01-01
            • 2021-05-04
            • 1970-01-01
            相关资源
            最近更新 更多