问题标签 [insert-update]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 将数据插入数据库 (Baza.mdf)/Visual Studio/C# 的 ADO.NET 实体数据模型问题
直升机。首先,我为我的英语感到抱歉。我正在用 C# 在 Visual Studio 2008 中编写 Windows 窗体应用程序。我创建了数据库 (Baza.mdf) 或者更确切地说是“基于服务的数据库”,这是在 WindowsForm App 中创建 .mdf 的唯一选项。然后我创建 ADO.NET 实体数据模型。我添加新数据源并将“BazaDataSet”拖放到我的表单中。我使用文本框创建其他表单以添加新值。当我添加新记录时,它在“BazaDataSet”中可见 - 它添加成功,但是当我在 Baza.mdf 中单击“显示表数据”时,没有任何变化。请帮忙。
这是我的代码: BazaEntities gg = new BazaEntities(); //var cos = (from u in jj select u); // jj.id = int.Parse(idAutaBox.Text); jj.marka = MarkaBox.Text; jj.model = ModelBox.Text; gg.AddToAutasSet(jj); gg.SaveChanges();
jpa - 使用 JPA 一次性创建新实体或更新现有实体
A 有一个 JPA 实体,该实体具有时间戳字段并由复杂的标识符字段区分。我需要的是更新已经存储的实体中的时间戳,否则使用当前时间戳创建和存储新实体。
事实证明,这项任务并不像第一眼看上去那么简单。问题是在并发环境中我得到了令人讨厌的“唯一索引或主键违规”异常。这是我的代码:
请注意,在此示例中,实体标识符不是在插入时生成的,而是预先知道的。
当两个或多个线程并行运行此代码块时,它们可能同时null
从entityManager.find(Entity.class, id)
方法调用中获取,因此它们会尝试同时保存两个或多个实体,使用相同的标识符导致错误。
我认为这个问题的解决方案很少。
- 当然我可以将此代码块与全局锁同步以防止对数据库的并发访问,但这会是最有效的方法吗?
- 一些数据库支持非常方便
MERGE
的语句,如果不存在就更新现有行或创建新行。但我怀疑 OpenJPA(我选择的 JPA 实现)是否支持它。 - 如果 JPA 不支持 SQL MERGE,我总是可以回退到普通的旧 JDBC 并对数据库做任何我想做的事情。但我不想留下舒适的 API 并弄乱毛茸茸的 JDBC+SQL 组合。
- 有一个魔术技巧可以仅使用标准 JPA API 来修复它,但我还不知道。
请帮忙。
mysql - INSERT INTO ... SELECT FROM ... ON DUPLICATE KEY UPDATE
我正在执行插入查询,如果已经存在唯一键,则需要将许多列中的大多数更新为新值。它是这样的:
我不确定该UPDATE
子句的语法应该是什么。如何从SELECT
子句中引用当前行?
sql - 在同一个 MySQL 事务中更新依赖表的方法?
我需要在一个事务中更新两个表。单个查询如下所示:
如果上面的查询导致插入,那么我需要在第二个表上运行以下语句:
除此以外,
现在我首先在 t1 上运行 SELECT,以确定语句 1 是否会在 t1 上导致插入或更新。然后我在事务中运行语句 1 和语句 2 和 3。我可以通过哪些方式在一笔交易中完成所有这些操作?
我想到的方法如下:
不幸的是,在 MySQL 5.0 中没有多表 INSERT... ON DUPLICATE KEY UPDATE。我还能做什么?
sql - 使用 NHibernate 使用 SQL 服务器端 DEFAULT 值插入/更新
我们的几个数据库表包含 LastModifiedDate 列。我们希望这些基于单个时间源保持同步。在这种情况下,我们最好的时间源是 SQL Server 本身,因为只有一个数据库服务器,但多个应用程序服务器可能会不同步。
我希望能够使用 NHibernate,但在这些表上更新或插入行时,让它使用 GETUTCDATE() 或 DEFAULT 作为列值。
想法?
编辑:基于缺乏回应,我只需要相信这是 NHibernate 无法做到的。这让我很难过。
c# - 实体框架 - 使用外键插入
如果某处对此有明确的答案,我们深表歉意。但我不能插入到一个简单的表中,因为它包含一个外键。
任务表
我尝试像这样插入:
但是得到一个 updateException 错误: 正在从 AssociationSet 'FK_Task_Status' 中添加或删除关系。对于基数约束,还必须添加或删除相应的“任务”。
我怎样才能插入到这个表中?
干杯
……
发现我的问题....
我的架构是错误的。当我创建外键时,我将它指向了错误的字段。查看 SQL 探查器,看到了这个:
选择 1 AS [C1]、[Extent1].[Id] AS [Id]、[Extent1].[Descr] AS [Descr]、[Extent2].[Id] AS [Id1] FROM [dbo].[Status] AS [Extent1] 左外连接 [dbo].[Task] AS [Extent2] ON [Extent1].[Id] = [Extent2].[Id]
应该是这个(加入 statusId 而不是 id):
选择 1 AS [C1]、[Extent1].[Id] AS [Id]、[Extent1].[Descr] AS [Descr]、[Extent2].[Id] AS [Id1] FROM [dbo].[Status] AS [Extent1] 左外连接 [dbo].[Task] AS [Extent2] ON [Extent1].[Id] = [Extent2].[StatusId]
愚蠢的我;)
php - mySQL:知道何时更新和何时插入?
我仍然是一个 mySQL 新手,所以我想这样做以避免未来的不幸。
检测何时需要UPDATE
输入表中的条目或INSERT
新条目的正确方法是什么?
谢谢你。
c# - Linq2Sql - 尝试更新但 sql 中的 Set 语句为空
这很奇怪......之前完成了很多次更新,但无法发现为什么会有所不同。虽然我现在使用的是 .net 4.0 - 但我怀疑它是 L2S 实现中的一个错误。它不像这样是它的一个奇怪而美妙的应用。虽然我相当确定这段代码在我使用 RC 时有效。
我还设法通过使用以下信息从头开始构建项目来重现此错误。
这里的问题是L2S生成的update语句在set语句中没有字段。我已经尝试检查 pk 是否已设置(我认为 where 需要每个字段的唯一原因)并且还阅读了其他 dbml 属性。我已经使用 linq2Sql 大约 1 年了,从来没有遇到过问题......我仍然认为我只是有一个巨大的大脑放屁。
注意:我已经清理了 equals 和 GetHashCode 方法以删除一些字段 - 在此之后问题仍然存在。我还没有清理 SQL。
我有一个来自 dbml 的客户端类我添加了一个名为 update 的方法
CopyToMe 方法继承自一个接口
该类也覆盖了 getHashCode
和等于
部分类中的更新方法
CopytoMe 方法
我选择了一个客户端,更改其名称,然后调用此更新方法。生成的sql如下
我不知道为什么这不起作用......使用了这种
选择对象 -> 将字段设置为新值 -> 提交所选对象
模式多次,没有这个问题。dbml 也没有明显的问题——尽管这可能是一个错误的陈述
有任何想法吗?
这个问题让我看起来像我将不得不回到 ADO.Net 这会让我很难过。
sql - Oracle - 未对未修改的值执行更新的 UPSERT
我目前正在使用以下更新或插入 Oracle 语句:
这运行良好,只是如果数据与提供的参数值相同,更新语句将执行虚拟更新。我不介意在正常情况下进行虚拟更新,但是在此表上构建了一个复制/同步系统,使用表上的触发器来捕获更新的记录并为许多记录频繁执行此语句仅意味着我会在触发器中造成巨大的流量和同步系统。
是否有任何简单的方法可以重新编写此代码,如果没有必要,更新语句不会更新记录,而无需使用以下 IF-EXISTS 检查代码,我发现这些代码不够流畅,也可能对这项任务不是最有效的?
我也尝试使用 MERGE INTO 语句,但是当值未修改时它不适用于更新(更新不修改任何内容并执行插入,但发生 PK 冲突)。
完整的 MERGE INTO 示例:
看起来 Oracle 在内部使用 UPDATE...IF SQL%ROWCOUNT=0 THEN INSERT... 用于 MERGE INTO 子句?第二个 MERGE INTO 语句失败,因为 update 没有更新任何内容,因此执行了 INSERT 导致 PK 冲突,因为行已经存在,只是值没有改变。
oracle - 如何创建从两个表(Oracle DBMS)中生成“合并”数据集的选择 SQL 语句?
这是我最初的问题: 合并两个数据集
不幸的是,我省略了一些细节,我想在这里详细说明。
所以我有两个表 events_source_1 和 events_source_2 表。我必须将这些表中的数据集生成到结果数据集中(我可以将其插入到第三个表中,但这无关紧要)。
events_source_1 包含历史事件数据,我必须获取最新事件(为此,我正在执行以下操作:
events_source_2 包含未来的事件数据,我必须执行以下操作:
如何放置外部连接语句来填补空白(即当从 event_source_2 找到相同的 event_type、b、c 时,next_event_date 将填充找到的第一个日期
非常感谢您提前提供的帮助。