我目前面临一个问题,我想为此提供一个快速解决方案。在条件允许的情况下插入或更新
我已经找到关于这个问题的另一个答案,但没有人帮助过,我读过关于INSERT INTO和INSERT ON DUPLICATE KEY UPDATE的内容,但我认为它并不能真正帮助我。
因此,事情是,我已经启用了一些Migrations,为现有表添加新列,事情是迁移之前表上的现有记录即使在现有列上也获得空值的记录(因为我正在更改订单新表上的列被移植)
我正在做一个SP,它的目的是根据插入或更新来填充迁移的新表。
- 我要永远插入新记录,除非我发现现有记录与空列的表的情况下(列ID - 主键 - 充满)
“伪代码” (混合SQL表的知识和C#语法)会是这样的:从tableMigrated删除所有行前:
int i = 0;
foreach(Record item in importing_data_table)
{
if(i < tableMigrated.Length && tableMigrated[i].Column IS NULL)
{
UPDATE tableMigrated[i] SET Column = item.Column
}
else
{
INSERT INTO item
}
i++;
}
注意插入不是可能,因为该表有外键。尝试该方法时出现以下错误: - DELETE语句与REFERENCE约束“FK_blabla.Testing_testingTest.tableMigrated_Id”冲突。
NOTE2:也许我唯一的选择是使用游标?
非常感谢您的帮助!
我知道有人要问这个问题。我本周为自己解决了这个问题。更新返回一个整数,表示受影响的行数。所以如果更新返回零,然后我插入数据。如果主键值已经存在于数据库中,则无法插入。所以首先尝试更新,如果它返回零行受影响,然后使用插入。 – jdweng