【问题标题】:create an insert trigger创建插入触发器
【发布时间】:2011-04-05 10:21:50
【问题描述】:

如何在 SQL Server 中编写一个触发器,以帮助我在将某些数据插入另一个表时将值插入到另一个表中?而且我还想用第二个表中插入的数据来插入第一个表。

有A表和B表,

当一行插入表 B(TBLP1ISLEM)

我想从这个插入中插入几个单元格,

进入表 A(TBLP1DOVIZKURU)。

表 B,已插入

触发器帮助 => 表 A,已插入

谢谢。

代码

CREATE TRIGGER [dbo].[Deneme] 
   ON  [dbo].[TBLP1ISLEM] 
   FOR INSERT
AS 
IF(SELECT ID FROM inserted)>0
BEGIN
    SET NOCOUNT ON;
    INSERT INTO TBLP1DOVIZKURU(ISLEM_ID,DOVIZBIRIM,KUR) 
    SELECT ID, PARABIRIMI, KUR FROM inserted


END

【问题讨论】:

    标签: database sql-server-2008 triggers


    【解决方案1】:

    在表 B 上添加一个触发器以进行插入。它将允许您捕获插入的数据并对其进行任何操作。你可以使用插入的数据,你可以查询另一个表……等等……

    CREATE TRIGGER trigger_Insert_TableB
    ON TableB
    FOR INSERT
    AS
    Begin
        Select * FROM Inserted //This will give you the inserted data
    End
    

    【讨论】:

    • 谢谢,我试过了,但没用,可能是表格有问题。
    【解决方案2】:
    CREATE TRIGGER your_trigger_name
    ON  [TableB]
    FOR INSERT
    AS 
    BEGIN
    
    INSERT INTO TableA (tA_field1,tA_field2,tA_other_fields)  SELECT tB_field1,tB_field2,tB_other_fields FROM Inserted
    
    END
    

    【讨论】:

    • 我写了一个完全一样的代码,但它不起作用,我想知道为什么
    • 您有什么具体的错误吗?也许你在表 A 上有一些其他触发器不允许数据插入,即 PK、FK、约束、NULLS 或其他触发器。
    【解决方案3】:
    SYSTEM@valeh> create table emp_list (id number, name varchar2(20));
     SYSTEM@valeh> insert into emp_list values (1,'Valeh');
     SYSTEM@valeh> create table emp_age (age_id number, emp_id number, emp_age number);
     SYSTEM@valeh> create view emp_view as select * from emp_list el,emp_age age where el.id=age.emp_id;
    
    
    create or replace trigger view_trigger
     instead of insert on emp_view
     referencing new as new old as old
     declare
     v_id VARCHAR(20);
     begin
     if :new.id is not null then
     insert into emp_list (id,name) values (:new.id,:new.name);
     insert into emp_age (age_id,emp_id,emp_age) values (:new.age_id,:new.emp_id,:new.emp_age)
     returning :new.id into v_id;
     else
     raise_application_error (-20999, 'Cannot create employee without name');
     end if;
     end;
    
    
    SYSTEM@valeh> insert into emp_view values (2,'taleh',2,2,20);
    
    SYSTEM@valeh> select * from emp_view;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多