触发器建立的有问题
create or replace trigger tri_log
before insert on borrowlog
for each row
begin
select TraceNo_Seq.nextval into :new.TraceNo from dual;
end;
create or replace trigger tri_log
before insert on borrowlog
for each row
begin
select TraceNo_Seq.nextval into :new.TraceNo from dual;
end;
create or replace trigger tri_log
before insert on borrowlog
for each row
begin
select tri_log.nextval into :new.id from dual;
end;
create sequence seq_account increment by 1 start with 1 nomaxvalue nocycle;create or replace trigger tri_account before insert
on account
for each row
begin
select seq_account.nextval into :new.account_id from dual;
end tri_account;其他的内容不变,但是我运行以后发现,还是老样子。是什么原因呢?
这里我不知道 from dual 是什么意思?一定是这个参数吗?
谢谢。
begin
select seq_account.nextval into :new.account_id from dual;
end tri_account;修改为
begin
select tri_account.nextval into :new.account_id from dual;
end tri_account;
也不行啊
create table borrowlog
(
log_id number(16,0),
account_id number(16,0),
book_id number(16,0),
borrow_date date,
deadline date,
return_date date,
times number(2,0),
constraint pk_borrowlog primary key(log_id));create sequence seq_log increment by 1 start with 1 nomaxvalue nocycle;create trigger tri_log before insert
on borrowlog for each row
declare
id number(16);
begin
select seq_log.nextval into id from dual;
new.log_id := id;
end;
/
insert ...
此外你的insert语句有问题,数据与字段的类型不一致。
create table borrowlog
(
log_id number(16,0),
account_id number(16,0),
book_id number(16,0),
borrow_date date,
deadline date,
return_date date,
times number(2,0),
constraint pk_borrowlog primary key(log_id));
drop sequence seq_log;
create sequence seq_log increment by 1 start with 1 nomaxvalue nocycle;create or replace trigger seq_log
before insert on borrowlog
for each row
begin
select seq_log.nextval into :new.log_id from dual;
end seq_log;
/insert into borrowlog(account_id,book_id,borrow_date,deadline,return_date,times)
values ('006','009',to_date('2008-12-18','yyyy-mm-dd'),to_date('2008-12-18','yyyy-mm-dd'),to_date('2008-12-19','yyyy-mm-dd'),10);
commit;