create table tests
(id integer,
cur_date varchar2(20))
create or replace trigger sd
before insert on tests
for each rowbegin
select to_char(sysdate,'yyyy-mm') into :tests.cur_date from dual;
end;
(id integer,
cur_date varchar2(20))
create or replace trigger sd
before insert on tests
for each rowbegin
select to_char(sysdate,'yyyy-mm') into :tests.cur_date from dual;
end;
before insert on tests
for each rowbegin
select to_char(sysdate,'yyyy-mm') into :tests.cur_date from dual;
end;
错误见红色部分,
你以前玩什么数据库的 这个写法太牛了
你别告诉我你想通过这个语句往tests里插数据啊
2 (id integer,
3 cur_date varchar2(20));
Table created
SQL>
SQL> create or replace trigger sd
2 before insert on tests
3 for each row
4
5 begin
6 select to_char(sysdate,'yyyy-mm') into :new.cur_date from dual;
7 end;
8 /
Trigger created
SQL> INSERT INTO tests(ID)VALUES(1);
1 row inserted
SQL> SELECT * FROM tests;
ID CUR_DATE
--------------------------------------- --------------------
1 2010-08
SQL>
定义:
create trigger biufer_employees_department_id
before insert or update
of department_id
on employees_copy
referencing old as old_value
new as new_value
for each row
when (new_value.department_id<>80 )
begin
:new_value.commission_pct :=0;
end;
/Referencing 子句:
执行DML语句之前的值的默认名称是 :old ,之后的值是 :new
insert 操作只有:new
delete 操作只有 :old
update 操作两者都有referencing子句只是将new 和old重命名为new_value和old_value,目的是避免混淆。比如操作一个名为new的表时。
作用不很大。
:new类似于sql server的inserted表
:old类似于sql server的deleted表