2011-04-05 199 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;