USERID是一个序列
SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
上面这条语句的含义是什么?
此外,我还想编写一个触发器,完成这样的功能:当删除一条记录之后,就触发同时删除多个表,其中这些表中中都有一项与删除的记录对应(值相同)。最好能写个例子。
其中,要删除的表为table1,与之关联的两个表为table2与table3。其中他们关联的项为tableindex。
SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
上面这条语句的含义是什么?
此外,我还想编写一个触发器,完成这样的功能:当删除一条记录之后,就触发同时删除多个表,其中这些表中中都有一项与删除的记录对应(值相同)。最好能写个例子。
其中,要删除的表为table1,与之关联的两个表为table2与table3。其中他们关联的项为tableindex。
1、SELECT LPAD(USERID.NEXTVAL,4,'0') INTO :NEW.NUM FROM DUAL;
其中的userid一定是一个sequence,所以呢USERID.NEXTVAL是取该序列的下一个值。
lpad的作用是在生成的在左面补上字符'0'使其达到四位
整个句子就是把生成的值赋值给变量NEW.
2、给你一个例子:
CREATE TRIGGER scott.emp_permit_changes
AFTER
DELETE ON table1
FOR EACH ROW
BEGIN
delete from table2 where id=:new.id;
delete from table3 where id=:new.id;
END;
未看到关联项是tableindex,这样,把上面的new.id换成new.tableindex就可以了。
说明:
old,new其实相当于一个行变量,即它代表一行,所以呢old应为原来的一行,而new是新的一行。
在delete中只有old的概念,在update中有old和new的概念,在insert中只有new的概念。
在delete中old代表被删除的一行,insert事件中new代表新增的一行。
select sysdate from dual;
desc dual;