三个数据库的触发器

当用户A,B存放数据到tableC的时候,会将用户A插入的数据的主键值和用户名一起存放到tableD去

即tableC(id(PK),name,pass)A用户插入(23,‘A1’,‘A2’)B用户插入(20,‘B1’,‘b2’)

触发器的作用是将(23,A)插入到表tableD去

mysql:

delimiter $$  --声明结束符号为“$$”
create  trigger insert_user_t_trigger  before insert on  user_t 
for each row
begin
       declare keyFieldName varchar(50) ;   
declare login_name varchar(50);
        SELECT COLUMN_NAME into  keyFieldName  FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE TABLE_NAME='user_t';
       SELECT USER() into login_name ;
        if  (keyFieldName ='ID' and  login_name= 'root@localhost' ) then
          insert into u_t(key_id,key_name) values(new.id,login_name);
        elseif ( keyFieldName ='USERNAME' and  login_name= 'root@localhost' ) then
               insert into u_t(key_id,key_name) values(new.USERNAME,login_name);
        else
              insert into u_t(key_id,key_name) values(new.password,login_name);
 end if;
 end $$


oracle:

create or replace trigger insert_user_t_trigger  
      after insert on user_t
              for each row
       declare
               v_sql   varchar2(1000) ;
               keyFieldName varchar2(50) ;
               login_name varchar2(50) ;
      BEGIN
        select c.column_name into keyFieldName from user_cons_columns c where c.table_name ='USER_T' and c.position is not null and rownum = 1;
        select user into login_name  from dual where rownum=1;
      if inserting and keyFieldName ='ID' and  login_name= 'SCOTT' then
             insert into u_t(key_id,key_name) values(:new.id,login_name);
      elsif inserting and keyFieldName ='USERNAME' and  login_name= 'SCOTT' then
               insert into u_t(key_id,key_name) values(:new.username,login_name);
      elsif inserting and keyFieldName ='PASSWORD' and  login_name= 'SCOTT' then
              insert into u_t(key_id,key_name) values(:new.password,login_name);
      end if;
end insert_user_t_trigger;


sqlserver:

create  trigger insert_user_t_trigger  on user_t 
for insert
as
 declare @keyFieldName varchar(50) ,@login_name varchar(50),@id varchar(50),@USERNAME varchar(50),@PASSWORD  varchar(50);
       SELECT @keyFieldName=COLUMN_NAME   FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE 
WHERE TABLE_NAME='user_t';
       SELECT @login_name= SUSER_NAME() ;
       if  (@keyFieldName ='ID' and  @login_name= 'sa' )
       begin
           select @id=id from inserted;
          insert into u_t(key_id,key_name) values(@id,@login_name);
       end
       else  if( @keyFieldName ='USERNAME' and  @login_name= 'sa' )
       begin
          select @USERNAME=USERNAME from inserted;
               insert into u_t(key_id,key_name) values(@USERNAME,@login_name);
               end
       else
       begin
          select @PASSWORD=PASSWORD from inserted;
              insert into u_t(key_id,key_name) values(@PASSWORD,@login_name);
        end;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值