CREATE or replace TRIGGER "my_trigger" BEFORE
INSERT ON my_table FOR EACH ROW WHEN (new.id is null)
begin
select my_sequence.nextval into: new.id from dual;
end;
插入数据
INSERT INTO my_table(Name,phone,address) Values('Cao','56498543','Heibei');我想在ORACLE里面建立一个主键自增加的机制
上面的这触发器我不知道new.id是什么意思,我的表的主键叫pid,我应该怎么修改begin和end中间的语呢?
而且我也不明白into:和from dual的作用是什么,给我解释解释好吗?
INSERT ON my_table FOR EACH ROW WHEN (new.id is null)
begin
select my_sequence.nextval into: new.id from dual;
end;
插入数据
INSERT INTO my_table(Name,phone,address) Values('Cao','56498543','Heibei');我想在ORACLE里面建立一个主键自增加的机制
上面的这触发器我不知道new.id是什么意思,我的表的主键叫pid,我应该怎么修改begin和end中间的语呢?
而且我也不明白into:和from dual的作用是什么,给我解释解释好吗?
解决方案 »
- oracle空格有哪些些代码,如:chr(13)换行,chr(10)回车
- 急!数据库迁移,但一张表不能导入!请大家帮帮忙!
- 请教该SQL语句的写法
- oracle如何读未提交的数据
- 请教:Delphi7.0,Oracle10, ADO连接,问题如下:主从表关系,当删除主表记录时,对应的从表记录没有删除,是什么原因?记得以前MSSQL时没
- 个人认为有点难度的一条查询语句,求各位帮忙~~~~~
- 【★】 一份 UNIX 下的 SQL 作业 【★】 --------求助------【现金报酬】【英文】
- 这个过程(procedure ) declare 有问题,能帮我看看吗?
- 数据表里用一个long类型字段,希望将这个表转移到另外一个表空间,出现错误Ora-00997,如何解决这个问题?
- 在POWERDESIGN中做的数据库设计倒入ORACLE中,能否保留住NAME栏的中文注释?
- 老生常谈:数据的删除问题
- 关于存储过程的问题?
select my_sequence.nextval into: new.id from dual;
换成
select my_sequence.nextval into :new.id from dual;
就可以了。
new.id 是语句插入时id的值,如果没有明确写除就是NULL或缺省值。 new.id前面加冒号是指bind variable的意思。
select my_sequence.nextval into :new.id from dual; 是用my_sequence.nextval 给 new.id赋值。
dual是个虚拟的表,只有一行一列。通常是来源没有明确的表的时候用它来作源表。如取系统时间就是:select sysdate from dual;
CREATE or replace TRIGGER "my_trigger" BEFORE
INSERT ON my_table /*改为你的表名*/
FOR EACH ROW WHEN (new.id /*id改为你的主键pid*/is null)
begin
select my_sequence.nextval/*my_sequence改为你的序列的名字*/
into: new.id/*id改为你的主键pid*/ from dual;
end; 另into:不是一个整体,而是into :new.id。:new.id代表触发器后调用的记录行,:old代表触发器调用前的记录
触发器很简单,你需要看看它的基础知识