触发器 订阅
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。此外触发器是逻辑电路的基本单元电路,具有记忆功能,可用于二进制数据储存,记忆信息等。 展开全文
触发器(trigger)是SQL server 提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作( insert,delete, update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。SQL3的触发器是一个能由系统自动执行对数据库修改的语句。触发器可以查询其他表,而且可以包含复杂的SQL语句。它们主要用于强制服从复杂的业务规则或要求。例如:您可以根据客户当前的帐户状态,控制是否允许插入新订单。触发器也可用于强制引用完整性,以便在多个表中添加、更新或删除行时,保留在这些表之间所定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。触发器与存储过程的唯一区别是触发器不能执行EXECUTE语句调用,而是在用户执行Transact-SQL语句时自动触发执行。此外触发器是逻辑电路的基本单元电路,具有记忆功能,可用于二进制数据储存,记忆信息等。
信息
外文名
trigger
类    别
DDL触发器、DML触发器、登录触发器
作    用
写入数据表前,强制检验或转换数据
中文名
触发器
简    介
与表事件相关的特殊的存储过程
常规类型
DML 触发器、DDL 触发器等
触发器触发器的作用
触发器有如下作用:
收起全文
精华内容
参与话题
问答
  • --触发器应用场景3:数据库的审计,基于值得审计 --给员工涨工资,当涨后的薪水超过6000时,审计该员工信息 --创建表,用于保存审计信息 /* create table audit_info ( information varchar2(200) );

    一 需求

    数据库的审计——基于值得审计功能
    当涨后的薪水超过6000时,审计该员工信息

    二 代码
    1. --触发器应用场景3:数据库的审计,基于值得审计
    2. --给员工涨工资,当涨后的薪水超过6000时,审计该员工信息
    3. --创建表,用于保存审计信息
    4. /*
    5. create table audit_info
    6. (
    7. information varchar2(200)
    8. );
    9. */
    10. create or replace trigger do_audit_emp_salay
    11. after update
    12. on emp
    13. for each row
    14. begin
    15. if:new.sal >6000then
    16. insert into audit_info values(:new.empno||' '||:new.ename||' '||:new.sal);
    17. endif;
    18. end;
     
    三 验证
    SQL> select * from audit_info;
     
    INFORMATION
    --------------------------------------------------------------------------------
    7566 JONES 9075
    7698 BLAKE 8850
    7782 CLARK 8450
    7788 SCOTT 7000
    7839 KING 12101
    7902 FORD 7000
     
    已选择6行。

     

    展开全文
  • 视图已经定义便存储在数据库中,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改、删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;...

    视图

    视图已经定义便存储在数据库中,通过视图看到的数据只是存放在基本表中的数据。对视图的操作与对表的操作一样,可以对其进行查询、修改、删除。当对通过视图看到的数据进行修改时,相应的基本表的数据也要发生变化;同时,若基本表的数据发生变化,则这种变化也可以自动的反映到视图中。

    优点
    1. 简单化
      看到的就是需要的。视图不仅可以简化用户对数据的理解,也可以简化他们的操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
    2. 安全性
      通过视图用户只能查询和修改他们所能见到的数据。数据库中的其他数据则既看不见也取不到。通过视图,用户可以被限制在数据的不同子集上。
    3. 逻辑独立
      视图可以帮助用户屏蔽真实表结构变化带来的影响。

    触发器

    触发器是个特殊的存储过程,不同的是,执行存储过程要使用CALL语句来调用。而触发器的执行不需要CALL语句来调用,也不需要手工启动,只要当一个预定义的事件发生的时候,就会被MySQL自动调用。

    注意

    在使用触发器的时候需要注意,对于相同的表,相同的事件只能创建一个触发器。

    数据库备份

    1. MySQLdump 可以备份 单个数据库,单个表,多个数据库 但是是备份在MySQL所在服务器上的。如果备份的都是MyISAM类型的表 可以使用MySQLhotcopy工具,这个工具会更快。
      注意:如果使用MySQLdump备份整个数据库时,需要指定-database参数 不然就只有记录,而没有建表语句,从而不能直接恢复。
    2. 可以使用SELECT INTO OUTFLIE将表导出
      注意:该文件被创建在服务器主机上,而且必须拥有文件写入权限,另外filename不能是一个已经存在的文件
      与之相对应的是 LOAD DATA INFILE
    展开全文
  • 触发器

    千次阅读 2017-06-10 19:57:24
    触发器的概念触发器是在满足某个特定条件自动触发执行的专用存储过程,用于保证表中的数据遵循数据库设计者确定的规则和约束。触发器可以用SQL语句编写。与存储过程不同的是,存储过程是通过名称而被显式调用执行,...

    基本概念

    1.触发器的概念

    触发器是在满足某个特定条件自动触发执行的专用存储过程,用于保证表中的数据遵循数据库设计者确定的规则和约束。触发器可以用SQL语句编写。与存储过程不同的是,存储过程是通过名称而被显式调用执行,而触发器是通过事件进行触发而被执行,不能被显式调用。如当对表进行更新(update),插入(insert),删除(delete)时,DBMS就会自动触发执行触发器所定义的SQL语句。
    SQL Server中提供两种触发器:after触发器和instead of触发器。

    2.触发器中的两个特殊表

    inserted和deleted表。这两个表存储在缓存中,由系统维护,不允许用户对其修改。

    (1)inserted表。该表中存放的是由于执行insertupdate语句而要向表中插入的新数据行。当用户执行insertupdate时,新的数据行被添加到激活触发器的表中,同时这些数据行的备份被复制到insertd临时表中。
    (2)deleted表。该表中存放的是由于执行deleteupdate语句而要从表中删除的数据行。在执行deleteupdate语句时,指定的数据行被用户从基本表中删除,然后被转移到了deleted表中。一般来说,在基本表和deleted表中不会存在有相同的数据行。
       对于表的更新操作update,可以看作是由两个操作组成的。首先将旧的数据行从基本表中转移到deleted表中,即执行一个delete操作;然后将新的数据行同时插入到激活触发器的基本表和inserted表中。

    定义触发器

    1.使用SQL语句创建触发器

    create trigger trigger_name on {table_name | view_name}
    [with encryption] {for | after | instead of}
    [insert,update,delete]
    as
      sql_statement
    其中
    trigger_name:用户创建的触发器的名称。触发器名称必须符合标识符规则,并且在数据库中必须唯一。
    table_name | view_name:在其上定义触发器的表或视图名称,也称为触发器表或触发器视图
    with encryption:加密syscomments表中包含的create trigger语句文本。
    after:指定触发器的激活时机是在触发SQL语句中指定的操作都已成功执行后。一个表的每个修改动作均可有多个after触发器。注意,不能在视图上定义after触发器。
    for:与after相同,为兼容早期的SQL Server版本而设置。
    instead of:指定执行触发器中的SQL语句而不执行触发SQL语句,从而代替触发语句的操作。在表或视图上,每个insert,update,delete语句最多可以定义一个instead of触发器。instead of触发器不能再使用了with check option选项的可更新视图上定义。
    sql_statement:触发器被触发后要执行的SQL语句。

    eg:创建一个触发器,当学生表中的记录被更新时,显示表中的所有记录。

    create trigger student_change
       on student after insert,update,delete
       as
          select * from student;

    eg:在Student表上创建delete触发器,实现Student表和SC表的级联删除。

    create trigger studentDelete on Student
           after delete
    as
           delete from SC
           where Son in(select deleted.Sno from deleted);

    eg:在SC表上创建insert触发器,当向SC表中添加学生的选课记录时,检查该学生的Sno是否存在。若不存在,则不能将记录插入。

    create trigger sc_insert on SC
       after insert
    as
       if(select count(*) from Student,inserted
         where Student.Sno=inserted.Sno)=0
       begin
         print '学号不存在,不能插入该记录'
         rollback transaction
       end;
    在该触发器中,当向SC表中添加记录后,首先检查Sno在Student表中是否存在,若不存在,则事务回滚。

    eg:创建update触发器,禁止对Student表中学生的学号进行修改

    create trigger student_update on Student
        after update
    as
        if update(Sno)
        begin
           print '学生的学号不能修改'
           rollback transaction
        end;

    eg:在SC表上创建触发器,当一次向SC表中添加多个记录时,删除学号在Student表中不存在的记录,从而保证数据的一致性。注意,不能在SC表中定义外键约束。

    create trigger sc_insert on SC after insert
    as
      if(select count(*)
        from Student,inserted
        where Student.Sno=inserted.Sno)<> @@rowcount
      begin
        delete from SC
        where Sno not in(select Sno from Student)
      end;
    在该触发器被激活以前,insert操作已经把所有记录插入到SC表中了,这些记录可能包含学号在Student表中不存在的记录。当该触发器被激活后,判断插入到SC表的Sno是否都在Student表中存在。若有不存在的,则从SC表中删除那些Sno在Student表中不存在的记录。

    eg:在视图上定义instead of触发器。

    假设有一个反映学生出生年份的视图
    create view birth_view(Sno,Sname,Ssex,Sbirth,Sdept)
    as
      select Sno,Sname,Ssex,2008-Sage,Sdept
      from student;

    在该视图中,学生的出生年份是通过计算得到的。若通过该视图向Student表中插入一条记录,例如(‘950021’,’李伟’,’男’,1987,’CS’),则可以在该视图上定义如下的instead of触发器来实现。

    create trigger birth_view_insert on birth_view
    instead of
    as
        declare @Sno char(6)
        declare @Sname varchar(10)
        declare @Ssex char(2)
        declare @birth int
        declare @Sage int
        declare @Sdept char(20)
        select @Sno=Sno,@Sname=Sname,@Ssex=Ssex,@birth=Sbirth,@Sdept=Sdept
        from inserted
        set @Sage=2008-@birth
        insert into Student(Sno,Sname,Ssex,Sage,Sdept)
        values(@Sno,@Sname,@Ssex,@Sage,@Sdept);
       instead of触发器用于替代引起触发器执行的SQL语句。当向birth_view视图执行insert语句时,birth_view_insert触发器激活,此时inserted表中已经有了要插入的数据,如('950021','李伟','男',1987,'CS')。在birth_view_insert触发器代码中,计算@Sage=2008-@birth,然后将数据插入基本表Student中,而激发该触发器的insert语句不会被执行。
        例如,在birth_view视图执行插入语句
        insert into birth_view
        values('950021','李伟','男',1987,'CS');
        则可以将该记录插入到表Student中。

    删除触发器

    drop trigger trigger_name[,...n];

    相关链接:http://www.cnblogs.com/rainman/p/3675834.html

    展开全文
  • 触发器数据库_触发器实例

    千次阅读 2016-07-31 15:31:28
    数据库触发器案例 一、课堂演示案例 例一:创建一个简单的insert触发器 先创建一个数据库备用 create database sampledb go   use sampledb go   在新创建的库中创建一个表备用 create table aa (  ...

    数据库触发器案例

    一、课堂演示案例

    例一:创建一个简单的insert触发器

    先创建一个数据库备用

    create database sampledb

    go

     

    use sampledb

    go

     

    在新创建的库中创建一个表备用

    create table aa

    (

     a int,

     b int

    )

    go

     

    在新创建的表上创建一个insert触发器

    use sampledb

    go

     

    if exists(select name from sysobjects where name ='tr_intoa' and type='tr')

    drop trigger tr_intoa

    go

     

    create trigger tr_intoa on aa

    for insert

    as

    print 'success inserted one row!'

     

    查看这个触发器的定义文本

    sp_helptext checkpubdate

     

    查看这个触发器的信息

    sp_help checkpubdate

     

    验证这个触发器的工作情况

    insert into aa values (1,2)

    ----------------------------------------------------------------------------------------------------------------------

     

    例二:创建一个触发器监视insert操作,若插入的记录中版权费超过30,则提示用户,并回滚此操作。

    use pubs

    go

     

    if exists(select name from sysobjects where name ='CheckRoyalty' and type='tr')

    drop trigger CheckRoyalty

    go

     

    create trigger checkroyalty

    on roysched

    for insert as

    if (select royalty from inserted) > 30

    begin

    print 'royaltytrigger:版权费不能超过 30'

     print '请将版权费修改为小于 30 的值'

     rollback transaction

    end

     

    insert into roysched values ('BU1032',2,5,90)

     

    select * from roysched where title_id='BU1032'

    ----------------------------------------------------------------------------------------------------------------------

     

    例三:创建一个触发器监视insert操作,若插入的记录中出版日期小于当前日期,则提示用户,并回滚此操作。

    use pubs

    go

     

    if exists(select name from sysobjects where name ='checkpubdate' and type='tr')

    drop trigger checkpubdate

    go

     

    create trigger checkpubdate

    on titles

    for insert as

    if (select pubdate from inserted) < getdate()

    begin

      select * from inserted   --查看内存表中的数据

      print '出版日期小于当前日期'

      rollback transaction

    end

     

    触发器示例测试

    insert into titles(title_id,title,type,pubdate)

    values('SW0001','test book','business','1990-1-1')

     

    select * from inserted

    ----------------------------------------------------------------------------------------------------------------------

     

    例四:列级update触发器示例

    use pubs

    go

     

    if exists(select name from sysobjects where name ='NoUpdatePayterms' and type='tr')

    drop trigger NoUpdatePayterms

    go

     

    CREATE TRIGGER NoUpdatePayterms

    ON sales

    FOR UPDATE AS

    IF UPDATE (payterms)

    BEGIN

      PRINT '不能修改订单的付费条款'

    ROLLBACK TRANSACTION

    END

     

    测试触发器的工作情况

    update sales set qty=8

    where stor_id='6380' and

          ord_num='6871' and

          title_id='BU1032'

     

    update sales set payterms='aa'

    where stor_id='6380' and

          ord_num='6871' and

          title_id='BU1032'

    ----------------------------------------------------------------------------------------------------------------------

     

    例五:表级update触发器实例

    use pubs

    go

     

    if exists(select name from sysobjects where name ='NoUpdateDiscount' and type='tr')

    drop trigger NoUpdateDiscount

    go

     

    create trigger NoUpdateDiscount

    on discounts

    for update as

     

    if (select discount from inserted) > 12

    begin

        select * from inserted   --查看内存表中的数据

        select * from deleted   --查看内存表中的数据

      print '不能指定大于 12% 的折扣'

      rollback transaction

    end

     

    表级 UPDATE 触发器测试

    update discounts  

    set discount = 20  

    where stor_id = '8042'

    ----------------------------------------------------------------------------------------------------------------------

     

    例六:列级update 触发器示例

    use  northwind

    go

     

    建立登记修改人帐号的表

    create table who_change

    (

     change_date datetime,

     change_column varchar(50),

     who varchar(50)

    )

    go

     

    建立触发器

    use  northwind

    go

     

    if exists(select name from sysobjects where name ='tr_orderdetail_insupd' and type='tr')

    drop trigger tr_orderdetail_insupd

    go

     

    create trigger tr_orderdetail_insupd

    on

    [order details]

    for update

    as

    if update (unitprice)

    begin

      insert who_change

      values (getdate(),'unitprice updated',user_name())

    end

    else if update (Quantity)

      begin

        insert who_change values(getdate(),'quantity updated',user_name())    

      end

    else if update(discount)

    begin

      insert who_change values (getdate(),'discount updated',user_name())

    end

    go

     

    测试触发器的工作情况

    update [order details] set unitprice=2 where orderid=10248 and productid=1

    update [order details] set Quantity=4 where orderid=10248 and productid=1

    update [order details] set discount=0 where orderid=10248 and productid=1

    ----------------------------------------------------------------------------------------------------------------------

     

    例七:触发器只能在当前数据库中创建。 但是,触发器可以引用其他数据库中的对象。(示例)

    use sampledb

    go

     

    创建表test备用

    create table test

    (

     aa int,

     bb int

    )

    go

     

    向test表中插入一些数据备用

    insert into test values (1001,0)

    insert into test values (1002,0)

    insert into test values (1003,0)

     

    创建另一个库备用

    create database testdb

    go

     

    use testdb

    go

     

    在库testdb中再创建一个表备用

    create table test_11

    (

     aa int,

     bb int

    )

    go

     

    在testdb库中的表test_11上创建一个insert触发器

    use testdb

    go

     

    if exists(select name from sysobjects where name ='tri_test' and type='tr')

    drop trigger tri_test

    go

     

    create trigger tri_test on test_11

    for insert

    as

      update sampledb.dbo.test

      set bb=bb+(select bb from inserted)

      where aa= (select aa from inserted)

     

    测试触发器的工作情况

    insert into test_11 values (1002,2)

     

    insert into test_11 values (1001,1)

    ----------------------------------------------------------------------------------------------------------------------

     

    例八:DELETE 触发器示例

    use testdb

    go

     

    if exists(select name from sysobjects where name ='NoDelete9901' and type='tr')

    drop trigger NoDelete9901

    go

     

    create trigger NoDelete9901

    on pub_info

    for delete AS

    if (select pub_id from deleted) = '9901'

    begin

      print '不能删除出版商 9901 的详细信息'

      rollback transaction

    end

     

    DELETE 触发器示例测试

    delete pub_info

    where pub_id = '9901'

    ----------------------------------------------------------------------------------------------------------------------

     

    例九:视图上的 INSTEAD OF 触发器示例

    use pubs

    go

     

    select * into bak_employee from employee

    select * into bak_publishers from publishers

     

    create view Emp_pub

    as

    select emp_id, lname, job_id, pub_name

    from bak_employee e, bak_publishers p

    where e.pub_id = p.pub_id

     

    create trigger del_emp

    on Emp_pub

    instead of delete

    as

      select * from deleted   --查看内存表中的数据

      delete bak_publishers

      where emp_id in

    (select emp_id from deleted)

     

    视图上的 INSTEAD OF 触发器示例测试

    delete Emp_pub

    ----------------------------------------------------------------------------------------------------------------------

     

    例十:表上的INSTEAD OF 触发器示例

    use pubs

    go

     

    if exists(select name from sysobjects where name ='tri_deltitle' and type='tr')

    drop trigger tri_deltitle

    go

     

    create trigger tri_deltitle on titles

    instead of delete

    as

    print '不允许删除!'

     

    delete from titles where title_id='BU1032'

    ----------------------------------------------------------------------------------------------------------------------

     

    例十一:禁用触发器嵌套

    exec sp_configure 'nested trigger', 0

     

    例十二:启用触发器嵌套

    exec sp_configure 'nested trigger', 1

    ----------------------------------------------------------------------------------------------------------------------

     

    例十三:触发器嵌套示例

     

    use sampledb

    go

    建立触发器

    create table testa

    (

       a_id char(1),

       a_name char(2)

    )

    insert into testa values('1','1')

    insert into testa values('2','2')

    insert into testa values('3','3')

     

    create table testb

    (

       b_id char(1),

       b_name char(2)

    )

    insert into testb values('1','1')

    insert into testb values('2','2')

    insert into testb values('3','3')

     

    create table testc

    (

       c_id char(1),

       c_name char(2)

    )

    insert into testc values('1','1')

    insert into testc values('2','2')

    insert into testc values('3','3')

     

    触发器嵌套示例(1)

    create trigger del_testa

    on testa

    instead of delete

    as

      delete testb

      where b_id in

    (select a_id from deleted)

     

    create trigger del_testb

    on testb

    instead of delete

    as

      delete testc

      where c_id in

    (select b_id from deleted)

     

    触发器嵌套示例测试(1)

    delete testa where a_id = '1'

     

    -- drop trigger del_testa2

    -- drop trigger del_testb2

    ----------------------------------------------------------------------------------------------------------------------

     

    触发器嵌套示例(2)

    create trigger del_testa2

    on testa

    for delete

    as

      delete testb

      where b_id in

    (select a_id from deleted)

     

    create trigger del_testb2

    on testb

    for delete

    as

     delete testc

      where c_id in

    (select b_id from deleted)

     

    触发器嵌套示例测试(1)

    delete testa where a_id = '1'

    ----------------------------------------------------------------------------------------------------------------------

     

    例十四:触发器综合应用

    创建触发器

    use northwind

    if exists(select name from sysobjects where name ='tr_product_update' and type='tr')

    drop trigger tr_product_update

    go

     

    use  northwind

    go

     

    create trigger tr_product_update on products

    for update

    as

    declare @msg varchar(100)

    select @msg = str(@@rowcount)+'employees updated by this statement'

    print @msg

    return

    go

     

    管理触发器

    use  northwind

    go

     

    sp_helptrigger products,delete

     

    inerted和deleted表实现级联修改多数据表的触发器

    use  northwind

    go

     

    create trigger tr_suppliers_del

    on suppliers

    for delete

    as

    if @@rowcount=0

      return

    delete products from deleted d,suppliers s

    where d.supplierid=s.supplierid

    if @@error != 0

    begin

      rollback tran

      return

    end

    return

    go

    ----------------------------------------------------------------------------------------------------------------------

    例十五:列级触发器应用

    列级触发器 在通常情况下,用户对表所作的修改都只局限在表中的某些列上,而且,用户经常需要判断在某些列上的数据是否发生了修改,并在数据被修改时作出相应的反应。这种形式的触发器,被称为列级触发器。列级触发器主要

    针对某些列实施监控。

    use  northwind

    go

     

    建立登记修改人帐号的表

    create table who_change

    (

     change_date datetime,

     change_column varchar(50),

     who varchar(50)

    )

    go

     

    建立触发器

    create trigger tr_orderdetail_insupd

    on

    [order details]

    for insert,uodate

    as

    if update (unitprice)

    begin

      insert who_change

      values (getdate(),'unitprice updated',user_name())

    end

    else if update (Quantity)

      begin

        insert who_change values(getdate(),'quantity updated',user_name())    

      end

    else if update(discount)

    begin

      insert who_change values (getdate(),'discount updated',user_name())

    end

    go

    欢迎关注公众号:

     

    展开全文
  • 使用触发器记录数据库删除操作

    千次阅读 2015-03-01 20:48:40
    使用数据库触发器记录数据库表的删除操作,记录内容包括被删除行的信息以及操作用户信息、操作时间信息。
  • 创建触发器,要求如下:触发器名称:trigXSCP_insert 功能:当向“销售信息”表中插入数据时,如果“产品信息”表中的库存量小于欲销售数量,则提示信息“库存量不够,不能销售”,并回滚
  • 触发器数据库

    2015-06-15 17:20:18
    1.触发器是用户定义在关系表上的一类由事件驱动的特殊过程。一旦定义,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,在DBMS核心层进行集中的完整性控制。 2.定义触发器:Creatw TRIGGER  {...
  • 1触发器定义 : trigger 事件绑定的过程 捕获对象 以前端为例 js Document.getElementById $("#") 编写条件 触发条件 click blur 判断条件 if (){ block} 执行函数 Function(){} 当某个事物满足某个...
  • CREATE TRIGGER trigger_name ON table_name [WITH ENCRYPTION] FOR [DELETE, INSERT, UPDATE] AS T-SQL语句 ...比如系统中有A数据库,B数据库,都有table_name这张表,我哪知道为哪个数据库创建啊。
  • 通过触发器实现数据库同步(原创),肯定能用,有需要就拿走。
  • 数据库触发器

    2010-06-20 21:51:00
    数据库触发器是一种特殊的存储过程,当预定义的事件发生时,会自动调用触发器。 触发器允许数据库管理员在数据库之间建立一种关系,例如当改变一个数据库中的纪录时,可以触发来改变另一个数据库中的记录...
  • 2,可以通过数据库触发器来记录更新的数据, 3,可以通过最后更新的时间戳来进行同步 下面采用新建一个触发器来触发更新,将更新的数据放入中间表。 TRIGGER "GCG."USER_UPDATE_TRIGGER" BEFORE INSERT OR ...
  • 数据库触发器

    2016-05-24 11:04:26
    触发器是一种特殊类型的存储过程,触发器主要是通过实践进行触发而被执行,在存储过程中可以通过存储过程名字而被直接调用。但是用户不可直接调用。 作用: 实现有主键和外键所不能保证的复杂的参照完整性和数据的...

空空如也

1 2 3 4 5 ... 20
收藏数 50,313
精华内容 20,125
关键字:

触发器