表TABLE_CATEGORIES包含字段ID,用序列和触发器用于ID的自动增长。/*新建序列*/
CREATE SEQUENCE TABLE_CATEGORIES_SEQ
INCREMENT BY 1
START WITH 1
NOMAXVALUE
NOCYCLE
NOCACHE;/*新建触发器*/
CREATE OR REPLACE TRIGGER TABLE_CATEGORIES_TRG
BEFORE INSERT
ON TABLE_CATEGORIES
FOR EACH ROW
BEGIN
    SELECT TABLE_CATEGORIES_SEQ.NEXTVAL
    INTO :NEW.ID
    FROM DUAL;      /*这里dual的颜色没变,是什么原因*/
END

解决方案 »

  1.   

    没有指定maxvalue呀-- 序列号的产生 
    create sequence row_id 
    minvalue 1 
    maxvalue 9999999999999999999999 
    start with 1 
    increment by 1 insert into test values(row_id.nextval,....)  
    当前序列号row_id.currentval
    下一个序列号row_id.nextval
      

  2.   


    /*新建触发器*/
    CREATE OR REPLACE TRIGGER TABLE_CATEGORIES_TRG
    BEFORE INSERT
    ON TABLE_CATEGORIES
    FOR EACH ROW
    DECLARE
      newsid  NUMBER;
    BEGIN
        SELECT TABLE_CATEGORIES_SEQ.NEXTVAL
        INTO :newsid    /*:开头的为变量需先声明*/
        FROM DUAL;      /*没变颜色是正常的.*/
    END
      

  3.   

    这是我新建的3个触发器,后面两个是对的,但是就第一个有问题。三个触发器写的一样的,结果怎么会不一样呢?问题出在哪里了呢?/* 建3个触发器,配合对应的3个序列使用,用于id的自动增长*/
    CREATE OR REPLACE TRIGGER BAIDUZHIDAO_CATEGORIES_TRG
    BEFORE INSERT
    ON BAIDUZHIDAO_CATEGORIES
    FOR EACH ROW
    BEGIN
        SELECT BAIDUZHIDAO_CATEGORIES_SEQ.NEXTVAL
        INTO :NEW.CATEGORY_ID
        FROM DUAL;
    END;CREATE OR REPLACE TRIGGER BAIDUZHIDAO_QUESTIONS_TRG
    BEFORE INSERT
    ON BAIDUZHIDAO_QUESTIONS
    FOR EACH ROW
    BEGIN
        SELECT BAIDUZHIDAO_QUESTIONS_SEQ.NEXTVAL
        INTO :NEW.QUESTION_ID
        FROM DUAL;
    END;CREATE OR REPLACE TRIGGER BAIDUZHIDAO_ANSWERS_TRG
    BEFORE INSERT
    ON BAIDUZHIDAO_ANSWERS
    FOR EACH ROW
    BEGIN
        SELECT BAIDUZHIDAO_ANSWERS_SEQ.NEXTVAL
        INTO :NEW.ANSWER_ID
        FROM DUAL;
    END;在视图窗口中查看第一个触发器的代码,代码少了一部分。如下:
    CREATE OR REPLACE TRIGGER BAIDUZHIDAO_CATEGORIES_TRG
    BEFORE INSERT
    ON BAIDUZHIDAO_CATEGORIES
    FOR EACH ROW
    BEGIN
        SELECT BAIDUZHIDAO_CATEGORIES_SEQ.NEXTVAL
    /
    大家看看什么原因?
      

  4.   

    CREATE OR REPLACE TRIGGER BAIDUZHIDAO_CATEGORIES_TRG
    BEFORE INSERT
    ON BAIDUZHIDAO_CATEGORIES
    FOR EACH ROW
    BEGIN
        SELECT BAIDUZHIDAO_CATEGORIES_SEQ.NEXTVAL
        INTO :NEW.CATEGORY_ID
        FROM DUAL;
    END;
    一眼就看出来你DUAL后面那个;号是全角!
      

  5.   

    再请教一个问题,我怎么把seq.nextval赋值给c#函数里的变量?