对Expert one on one Oracle里面触发器的疑问

[复制链接]
查看11 | 回复4 | 2011-2-18 11:43:35 | 显示全部楼层 |阅读模式
在这本书中的第64页,tom给了下面一段代码的例子
create table t ( pk number primary key, ... );
create sequence t_seq;
create trigger t_trigger before insert on t for each row
begin
select t_seq.nextval into :new.pk from dual;
end;
我想要是插入一行新值应该怎么写,insert into t values(...);中pk的值应该怎么给出?
如果写t_seq.nextval那触发器岂不是没什么用处,还不如直接写。
小弟初接触oracle,请各位高手指教
回复

使用道具 举报

千问 | 2011-2-18 11:43:35 | 显示全部楼层
对,你可以直接写,也可以不提供pk的值,
也就是说它用触发器实现了自动增长的pk而已。
回复

使用道具 举报

千问 | 2011-2-18 11:43:35 | 显示全部楼层
就算你在insert中写了t_seq.nextval也是没用的,会被触发器覆盖
所以insert时不用给出pk的值
回复

使用道具 举报

千问 | 2011-2-18 11:43:35 | 显示全部楼层
我要是写insert into t values (t_seq.nextval);那岂不是先执行一下触发器,然后再取sequence值,那就还得insert into t values ('');才行吧?
回复

使用道具 举报

千问 | 2011-2-18 11:43:35 | 显示全部楼层
谢谢各位,明白了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行