這個不是觸發器的問題了。
觸發器只有三種:insert,update,delete的。而且必須建立在某個表上面
觸發器只有三種:insert,update,delete的。而且必須建立在某個表上面
解决方案 »
- PL/SQL如何在异常处理中捕获异常发生的位置
- sql developer 执行查询后,能自动获取查询结果的最后一页吗?
- oracle的导入导出泵。。
- Oracle update特别慢,比insert慢很多很多
- 重启服务器后, oracle 实例无法自动启动
- 请问oracle中的段是怎么分配的,是不是一个数据库对象占用一个段,比如一个表空间有三张表,那它就有三个数据段?
- PLSQL的年月问题
- 【倒数据问题】oracle->sql server
- union语句如何ordry by排序??高手急救啊!
- 请问ORACLE数据库恢复的问题
- 提问???关于触发器!!
- 怎么解决数据倒入时提示IMP-00016:不支持要求的字符集转换(从类型871到852)错误?
觸發器只有三種:insert,update,delete的。而且必須建立在某個表上面
(
session_id int not null, -- sessionid
drop_time date, -- drop的時間
ip_address varchar2(20), -- ip地址
object_owner varchar2(30), -- 對象的擁有者
object_name varchar2(30), -- 對象名稱
object_type varchar2(20), -- 對象類型
drop_by_user varchar2(30) -- 執行drop語句的用戶
);
create trigger a_tri
before create on schema
begin
insert into drop_log
(session_id,
drop_time,
ip_address,
object_owner,
object_name,
object_type,
drop_by_user)
values(USERENV('SESSIONID'),
sysdate,
SYS_CONTEXT('USERENV','IP_ADDRESS'),
sys.dictionary_obj_owner,
sys.dictionary_obj_name,
sys.dictionary_obj_type,
sys.login_user);
end;
/只能获取其对象名称,对象类型,与创建它的用户,不能改变对象名称的内容
(
session_id int not null, -- sessionid
drop_time date, -- drop的時間
ip_address varchar2(20), -- ip地址
object_owner varchar2(30), -- 對象的擁有者
object_name varchar2(30), -- 對象名稱
object_type varchar2(20), -- 對象類型
drop_by_user varchar2(30) -- 執行drop語句的用戶
);
create trigger a_tri
before create on schema
begin
insert into drop_log
(session_id,
drop_time,
ip_address,
object_owner,
object_name,
object_type,
drop_by_user)
values(USERENV('SESSIONID'),
sysdate,
SYS_CONTEXT('USERENV','IP_ADDRESS'),
sys.dictionary_obj_owner,
sys.dictionary_obj_name,
sys.dictionary_obj_type,
sys.login_user);
end;
/只能获取其对象名称,对象类型,与创建它的用户,不能改变对象名称的内容
create sequence SEQ_XT_LOG
minvalue 1
maxvalue 9999999999999999999999999999
start with 1062
increment by 1
cache 20
cycle;
下面的触发器的作用是:任何时候表中插入或更新了行, 当前的用户名和时间都记录入行中. 并且它保证给出了雇员名称并且薪水是一个正数. CREATE TABLE emp (
empname text,
salary integer,
last_date timestamp,
last_user text
);CREATE FUNCTION emp_stamp () RETURNS OPAQUE AS '
BEGIN
-- 检查是否给出了 empname 和 salary
IF NEW.empname ISNULL THEN
RAISE EXCEPTION ''empname cannot be NULL value'';
END IF;
IF NEW.salary ISNULL THEN
RAISE EXCEPTION ''% cannot have NULL salary'', NEW.empname;
END IF; -- 我们必须付帐给谁?
IF NEW.salary < 0 THEN
RAISE EXCEPTION ''% cannot have a negative salary'', NEW.empname;
END IF; -- 记住何时何人的薪水被修改了
NEW.last_date := ''now'';
NEW.last_user := current_user;
RETURN NEW;
END;
' LANGUAGE 'plpgsql';CREATE TRIGGER emp_stamp BEFORE INSERT OR UPDATE ON emp
FOR EACH ROW EXECUTE PROCEDURE emp_stamp();