【问题标题】:Fire a trigger after the whole foreach runs在整个 foreach 运行后触发触发器
【发布时间】:2016-09-29 18:59:56
【问题描述】:

我有一个 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 

【问题讨论】:

    标签: c# asp.net-mvc triggers


    【解决方案1】:

    这里的问题是,当您在 foreach 循环之外执行时,它只会处理最后一个 sql 查询命令,这就是为什么您只会插入最后一条记录,因为您的插入语句将只包含这一条记录值。

    如果您真的想这样做,您需要构建 SQL 插入语句。

    这里已经回答了这个问题:https://stackoverflow.com/a/21858031/1600129

    注意在 foreach 循环内外执行此操作的利弊:https://stackoverflow.com/a/2973097/1600129

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 2016-10-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多