我有一个SQL,它将执行Steoredproecure并在.net表中插入或更新一些列。在API中,这在事务中运行。
RecordID是该表中的主键字段,但是Customer和Date字段是唯一的组合,如果已经有具有该组合的记录,则不应该有重复的记录,而应改为update。
我们每天几乎要插入6到7,000条记录。有时API调用SP两次几乎只有几毫秒的差异。我在SP中进行了检查,如下所示:
SELECT @RecordExist = Count(*)
FROM Records (nolock)
WHERE ServiceDate = @Date
AN
我正在学习ASP.NET MVC和实体框架。
在我向学习之后,我认为当我们想要进行更新过程时,
我们需要先删除现有的记录
然后插入新记录。
我的代码:
public List<UserModel> _usrList = new List<UserModel>();
public void Update(UserModel umToUpdate)
{
foreach (UserModel um in _usrList)
{
if (um.UserName == umToUpdate.UserName
若要在SQL Server CE中插入记录,可以调用..InsertOnSubmit(),传递表示所插入记录的类实例,然后是.SubmitChanges();
我是否需要一个类似的结构来更新记录?我得到了这个:
SQLCEDataContext sqlcedc = new SQLCEDataContext(SQLCEDataContext.DBConnectionString);
var invitations = (from SQLCEDataDefinition invitation in
sqlcedc.SQLCEDataDefinition
我熟悉甲骨文的MERGE语句,它通常用于更新其他插入。
我的问题是,它是否可以用于更新+插入到日志表?
我想监视所有已经更新的记录,所以我需要将它们保存在一个日志表中。因此,我不想再次从两个大表中选择,而是将另一个INSERT语句放在WHEN MATCHED子句中。所以应该是这样的:
MERGE INTO tableA A
using TableB b
ON (a.Col = b.Col)
WHEN MATCHED THEN UPDATE SET A.col2 = b.col2
INSERT INTO tableA_Log (key,col)
VALUES (a.Key,b.col2)