2011-04-05 141 views
1

如何在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 

回答

1

表B上添加一个触发器插入件。它将允许您捕获插入的数据并根据需要执行任何操作。您可以使用插入的数据,就可以查询其他表...等...

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

谢谢,我尝试,但它没有工作,别的东西也许错表。 – Bastardo 2011-04-05 10:56:35

+0

是否可以看到代码? – Ali 2011-04-05 10:59:54

+0

我将代码添加到我的问题 – Bastardo 2011-04-05 11:03:09

1
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 
+0

我写了一个完全一样的代码,但它没有工作,我不知道为什么 – Bastardo 2011-04-05 10:55:57

+0

谢谢Silx我得到它的工作 – Bastardo 2011-04-05 11:13:02

+1

你会得到任何特定的错误? Mayby在表A中还有一些其他的触发器不允许数据插入,即PK,FK,约束,NULLS或其他触发器。 – Silx 2011-04-05 11:14:35

1
[email protected]> create table emp_list (id number, name varchar2(20)); 
[email protected]> insert into emp_list values (1,'Valeh'); 
[email protected]> create table emp_age (age_id number, emp_id number, emp_age number); 
[email protected]> 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; 


[email protected]> insert into emp_view values (2,'taleh',2,2,20); 

[email protected]> select * from emp_view;