2016-09-29 65 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

相关问题