表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
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
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
/*新建触发器*/
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
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
/
大家看看什么原因?
BEFORE INSERT
ON BAIDUZHIDAO_CATEGORIES
FOR EACH ROW
BEGIN
SELECT BAIDUZHIDAO_CATEGORIES_SEQ.NEXTVAL
INTO :NEW.CATEGORY_ID
FROM DUAL;
END;
一眼就看出来你DUAL后面那个;号是全角!
。