Sql oracle中的自动排序

Sql oracle中的自动排序,sql,oracle,Sql,Oracle,我试图使用触发器创建一个自动序列号生成,但它在插入值时给了我以下错误 ALTER TABLE sppinv_tblinventory_ex ADD ( CONSTRAINT sppinv_tblinventory_PK PRIMARY KEY (uniqueid)); create sequence row_seq ; create or replace trigger row_count before insert on sppinv_tblinventory_ex for each

我试图使用触发器创建一个自动序列号生成,但它在插入值时给了我以下错误

ALTER TABLE sppinv_tblinventory_ex ADD (
  CONSTRAINT sppinv_tblinventory_PK PRIMARY KEY (uniqueid));

create  sequence row_seq ;

create or replace trigger row_count before insert on sppinv_tblinventory_ex
for each row

begin
 select row_seq.nextval into : new.uniqueid from dual;
end;
如果我在下面执行,那么我可以插入值

insert into sppinv_tblinventory_ex
select  row_seq.nextval,
  b.member_id,b.src_claim_nbr,b.client_nbr,b.src_platform_cd,
  b.suspense_date,b.batch_gen_key,b.bucket_name,b.grouper_rule,
  b.event_number,b.case_stat,b.case_stat_dt,b.assigned_to,
  b.assigned_on,b.followup_dt,b.release_ind,b.release_dt,
  b.viewtype
from sppinv_tblinventory b
当我插入带有out uniqueID的值时,我得到如下错误

insert into sppinv_tblinventory_ex
select  b.member_id,b.src_claim_nbr,b.client_nbr,b.src_platform_cd,
  b.suspense_date,b.batch_gen_key,b.bucket_name,b.grouper_rule,
  b.event_number,b.case_stat,b.case_stat_dt,b.assigned_to,
  b.assigned_on,b.followup_dt,b.release_ind,b.release_dt,
  b.viewtype
from sppinv_tblinventory b

ORA-00947: not enough values

注意:我不想禁用触发器

互联网上有这么多答案…
尝试在
新建.uniqueid
之前删除空格;并添加如下所示的IF测试:

create or replace trigger row_count
before insert on sppinv_tblinventory_ex
for each row
begin
    IF :new.uniqueid IS NULL THEN
        select row_seq.nextval into :new.uniqueid from dual;
    END IF;
end;

现在,如果您在insert中的相应值字段中输入
null
,它应该会起作用

在互联网上有这么多答案…
尝试在
新建.uniqueid
之前删除空格;并添加如下所示的IF测试:

create or replace trigger row_count
before insert on sppinv_tblinventory_ex
for each row
begin
    IF :new.uniqueid IS NULL THEN
        select row_seq.nextval into :new.uniqueid from dual;
    END IF;
end;

现在,如果您在insert中的相应值字段中输入
null
,它应该会起作用

在互联网上有这么多答案…
尝试在
新建.uniqueid
之前删除空格;并添加如下所示的IF测试:

create or replace trigger row_count
before insert on sppinv_tblinventory_ex
for each row
begin
    IF :new.uniqueid IS NULL THEN
        select row_seq.nextval into :new.uniqueid from dual;
    END IF;
end;

现在,如果您在insert中的相应值字段中输入
null
,它应该会起作用

在互联网上有这么多答案…
尝试在
新建.uniqueid
之前删除空格;并添加如下所示的IF测试:

create or replace trigger row_count
before insert on sppinv_tblinventory_ex
for each row
begin
    IF :new.uniqueid IS NULL THEN
        select row_seq.nextval into :new.uniqueid from dual;
    END IF;
end;

现在,如果将
null
放在insert中相应的值字段中,它应该会起作用

ORA-00947:值不够-意味着表中有n个列,但只为(n-m)个字段提供值

在您的情况下,如果您不想插入唯一id,那么您可能必须这样做

Insert into sppinv_tblinventory_ex (col1, col2, col3.. coln) select (val1, val2, val3 .. valn)

ORA-00947:值不够-表示表中有n个列,但只提供(n-m)个字段的值

在您的情况下,如果您不想插入唯一id,那么您可能必须这样做

Insert into sppinv_tblinventory_ex (col1, col2, col3.. coln) select (val1, val2, val3 .. valn)

ORA-00947:值不够-表示表中有n个列,但只提供(n-m)个字段的值

在您的情况下,如果您不想插入唯一id,那么您可能必须这样做

Insert into sppinv_tblinventory_ex (col1, col2, col3.. coln) select (val1, val2, val3 .. valn)

ORA-00947:值不够-表示表中有n个列,但只提供(n-m)个字段的值

在您的情况下,如果您不想插入唯一id,那么您可能必须这样做

Insert into sppinv_tblinventory_ex (col1, col2, col3.. coln) select (val1, val2, val3 .. valn)


这不是问题所在。。。OP在insert上没有得到足够的值,这不是触发器编译错误。我编辑我的答案是为了在触发器代码中添加一个IF测试,如果OP在他的第一个字段中使用
null
,它应该可以工作。我同意冒号和
new
之间不应该有空格,但这不是问题所在。这并不能解决ORA-00947的问题。如果选择列表中的第一个值为null,则可以使用,但如果没有添加
If
,则为空。这不是问题所在。。。OP在insert上没有得到足够的值,这不是触发器编译错误。我编辑我的答案是为了在触发器代码中添加一个IF测试,如果OP在他的第一个字段中使用
null
,它应该可以工作。我同意冒号和
new
之间不应该有空格,但这不是问题所在。这并不能解决ORA-00947的问题。如果选择列表中的第一个值为null,则可以使用,但如果没有添加
If
,则为空。这不是问题所在。。。OP在insert上没有得到足够的值,这不是触发器编译错误。我编辑我的答案是为了在触发器代码中添加一个IF测试,如果OP在他的第一个字段中使用
null
,它应该可以工作。我同意冒号和
new
之间不应该有空格,但这不是问题所在。这并不能解决ORA-00947的问题。如果选择列表中的第一个值为null,则可以使用,但如果没有添加
If
,则为空。这不是问题所在。。。OP在insert上没有得到足够的值,这不是触发器编译错误。我编辑我的答案是为了在触发器代码中添加一个IF测试,如果OP在他的第一个字段中使用
null
,它应该可以工作。我同意冒号和
new
之间不应该有空格,但这不是问题所在。这并不能解决ORA-00947的问题。如果选择列表中的第一个值为null,则可以使用,但如果没有添加
If
,则情况就是如此。即使在提供每个值时,也最好提供列列表,因为列的顺序可能与您期望的顺序不符,这样更容易发现错误;当您不提供每个值时,如本例中所示,这是必需的。您也可以在列出所有列时使用关键字
DEFAULT
,并希望“排除”某些值。即使在提供每个值时,也最好提供列列表,因为列的顺序可能与您期望的不一致,因此更容易发现错误;当您不提供每个值时,如本例中所示,这是必需的。您也可以在列出所有列时使用关键字
DEFAULT
,并希望“排除”某些值。即使在提供每个值时,也最好提供列列表,因为列的顺序可能与您期望的不一致,因此更容易发现错误;当您不提供每个值时,如本例中所示,这是必需的。您也可以在列出所有列时使用关键字
DEFAULT
,并希望“排除”某些值。即使在提供每个值时,也最好提供列列表,因为列的顺序可能与您期望的不一致,因此更容易发现错误;当您不提供每个值时,如本例中所示,这是必需的。当您列出所有列并希望“排除”某些值时,也可以使用关键字
DEFAULT