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 警告:使用编译错误创建的触发器。I';我对创建触发器感到困惑_Sql_Oracle - Fatal编程技术网

Sql 警告:使用编译错误创建的触发器。I';我对创建触发器感到困惑

Sql 警告:使用编译错误创建的触发器。I';我对创建触发器感到困惑,sql,oracle,Sql,Oracle,创建一个名为SEQ_CUSTOMER的序列和一个名为TR_CUSTOMER_ID的触发器,该触发器将自动为C_ID列生成一个数字序列。该序列应从10000开始,递增1 CREATE SEQUENCE "SEQ_CUSTOMER" MINVALUE 50 MAXVALUE 999999999990 INCREMENT BY 1 START WITH 10000; CREATE OR REPLACE TRIGGER "TR_CUSTOMER_ID" BEFORE INSE

创建一个名为SEQ_CUSTOMER的序列和一个名为TR_CUSTOMER_ID的触发器,该触发器将自动为C_ID列生成一个数字序列。该序列应从10000开始,递增1

CREATE SEQUENCE "SEQ_CUSTOMER" 
   MINVALUE 50 MAXVALUE 999999999990
   INCREMENT BY 1 
   START WITH 10000; 

CREATE OR REPLACE TRIGGER "TR_CUSTOMER_ID" 
BEFORE INSERT ON "CUSTOMERS" 
FOR EACH ROW 
BEGIN
  SELECT "SEQ_CUSTOMER". NEXTVAL INTO :NEW.C_ID FROM DUAL; 
END; 
警告:使用编译错误创建触发器

SQL> SHOW ERRORS;
Errors for TRIGGER "TR_CUSTOMER_ID":

LINE/COL ERROR
-------- -----------------------------------------------------------------
2/1      PL/SQL: SQL Statement ignored
2/9      PL/SQL: ORA-02289: sequence does not exist
SQL>
如何解决这个问题,谢谢

是第一位的

DROP SEQUENCE SEQ_CUSTOMER;
CREATE SEQUENCE SEQ_CUSTOMER START WITH 10000;
第二

CREATE OR REPLACE TRIGGER TR_CUSTOMER_ID
BEFORE INSERT
ON CUSTOMERS
REFERENCING NEW AS New OLD AS Old
FOR EACH ROW
BEGIN
  :new.C_ID := SEQ_CUSTOMER.nextval;
END TR_CUSTOMER_ID;

删除触发器中的空格,也可以在引号之间写入空格

CREATE SEQUENCE "SEQ_CUSTOMER" 
   MINVALUE 50 MAXVALUE 999999999990
   INCREMENT BY 1 
   START WITH 10000
/

CREATE OR REPLACE TRIGGER "TR_CUSTOMER_ID" 
BEFORE INSERT ON "CUSTOMERS" 
FOR EACH ROW 
BEGIN
    SELECT SEQ_CUSTOMER.NEXTVAL
  INTO   :new.ID
  FROM   dual;
END;
/

丢失序列名称中的双引号。您可能使用了(不匹配的)空格。如GurV所述,序列名中有空格。失去引号。谢谢,我删除了whitesapsa的旁注:在这种情况下,没有必要将NEW AS NEW AS OLD AS OLD引用为NEW AS OLD另外,将序列值分配给变量的功能取决于版本,OP没有说明他/她使用的RDBMS的版本。谢谢!!!!但我想知道,为什么我需要在这里引用新旧一样的东西?