触发器在一个数据库里面已经写好,并且通过测试ok了!
现在需要把这些触发器搬到另外一个正式的数据库上面去,能否生成sql,怎么生成?在新的数据库上执行sql(怎么执行),自动把触发器加上?而且还想把触发器的源码也搬到新的数据库上!请教有经验的人士帮忙。
我的触发器是这样子的结构,trigger调用pakage和pakagebody的!
现在需要把这些触发器搬到另外一个正式的数据库上面去,能否生成sql,怎么生成?在新的数据库上执行sql(怎么执行),自动把触发器加上?而且还想把触发器的源码也搬到新的数据库上!请教有经验的人士帮忙。
我的触发器是这样子的结构,trigger调用pakage和pakagebody的!
select
DBMS_METADATA.GET_DDL('TRIGGER', 'your_trigger_name', 'your_schema')
FROM DUAL;
然後將語句在正式庫中執行一下就可以創建了。
你的意思是对table同步?是说在新数据库上面重新建立table,就会自动把触发器和table一起重新建立吗?
新数据库上的table早已经存在的,我是想在存在的table上添加触发器。
我的2个数据库是不同ip地址的数据库。
-- 在舊數據庫中查詢
select
DBMS_METADATA.GET_DDL('TRIGGER', 'USER_TRI', 'HR')
FROM DUAL;-- 結果
DBMS_METADATA.GET_DDL('TRIGGER','USER_TRI','HR')
--------------------------------------------------------------------------------
CREATE OR REPLACE TRIGGER "HR"."USER_TRI"
before insert or update or delete on ol_user_t
for each row
begin
if inserting then
insert into users values (ol_bbs_user_s.nextval,:new.loginName, :new.userNam
e,'1.gif',sysdate,1,1,50,1);
elsif updating then
update users set uPass = :new.Password where uName = :new.LoginName;
else
delete from users where uName = :new.LoginName;
end if;
end;
ALTER TRIGGER "HR"."USER_TRI" ENABLE -- 在新數據庫中,用sqlplus也好,其他工具也好,執行
CREATE OR REPLACE TRIGGER "HR"."USER_TRI"
before insert or update or delete on ol_user_t
for each row
begin
if inserting then
insert into users values (ol_bbs_user_s.nextval,:new.loginName, :new.userNam
e,'1.gif',sysdate,1,1,50,1);
elsif updating then
update users set uPass = :new.Password where uName = :new.LoginName;
else
delete from users where uName = :new.LoginName;
end if;
end;
-- 這樣就可以在新庫中創建舊庫的trigger了
我现在这么做解决了,就是有点麻烦,因为有触发器很多,需要一个一个的做:
在PL/SQL里面(当然这个PL/SQL我连的是新数据库),我打开触发器的源代码后,直接执行下,提示“编译成功”,这样就添加到新数据库了!估计用sql不能批量创建吧?