2016-09-29 66 views
-1

我有一個foreach循環,在foreach觸發之後觸發。所以事情是我需要在整個foreach結束後觸發這個觸發器(在這裏,問題是當第一個項目命中表然後觸發立即觸發在整個foreach運行後觸發一個觸發器

foreach (var item in NewsTypes.nIDs) 
{ 
    String query2 = "INSERT INTO TBL_NEWS_TYPE_REGIONS (ID, RID, ISACTIVE) VALUES (id.currval, :RID, :ISACTIVE)"; 
    cmd = db.GetSqlStringCommand(query2); 
    db.AddInParameter(cmd, "ID", DbType.Int32, item); 
    db.AddInParameter(cmd, "ISACTIVE", DbType.String, "1"); 
    db.ExecuteNonQuery(cmd); 
} 
//db.ExecuteNonQuery(cmd); <-- When i put this here only the last item inserted to the table. 

觸發與啓動:

CREATE OR REPLACE TRIGGER NEWSCHK.NEWSTRG 
AFTER INSERT 
ON NEWSCHK.TBL_NEWS_TYPE_REGIONS 

回答

0

這裏的問題是,當你把執行foreach循環只會處理最後一個SQL查詢命令之外,這這就是爲什麼你只會得到插入的最後一條記錄,因爲你的插入語句將會l只包含這一個記錄值。

如果你真的想這樣做,你需要建立SQL插入語句。

這已經在這裏找到答案:https://stackoverflow.com/a/21858031/1600129

要知道這是在這裏得到解答內部和外部的foreach循環做它的優點和缺點:https://stackoverflow.com/a/2973097/1600129

相關問題