数据库中触发器的使用

 数据库中的触发器指的是当对数据库中进行操作,当满足一定条件的时候,会触发保存在数据库中的触发器函数,并按照此函数中的内容以及设定,对数据库中的数据进行操作。

下面是一个简单的例子:在数据插入的时候,如果数据中的id已经存在,则执行对之前数据中名称的更新操作。

– 创建一个测试表

 create table test(id int primary key , name varchar(50));

– 在数据库中创建一个_replace()的触发器函数,实现的内容是:插入前ID如果已经存在则替换name的值

CREATE OR REPLACE function _replace() RETURNS TRIGGER AS $INSERT$

declare

    _has int ;

BEGIN

select id from test where id = NEW.id into _has;

    raise notice 'ddd:%' , _has;

    if _has > 0  then
        update test set name = NEW.name where id = NEW.id;

        RETURN null;

end if;

    return NEW;

END;

 $INSERT$

  LANGUAGE PLPGSQL;

– 将_replace()的触发器函数添加到test表中

CREATE TRIGGER tbefore BEFORE INSERT  ON test FOR EACH ROW EXECUTE PROCEDURE _replace();

– 测试插入两个值

insert into test(id , name) values(1,'1');
insert into test(id , name) values(1,'6');

–结果:

pumpkin=> select * from test;
 id | name
----+------
  1 | 6

你可能感兴趣的:(数据库,触发器)