是否可以将任意数据插入表中?

Posted

技术标签:

【中文标题】是否可以将任意数据插入表中?【英文标题】:Is it possible to insert arbitrary data into table? 【发布时间】:2014-12-25 16:20:51 【问题描述】:

insert into 语句要求为所有没有默认值的列提供值。

是否可以告诉服务器

插入任何你想要的值,我不在乎,唯一的 我想要的是你对数据感到满意。

换句话说,我只想为列的子集显式设置值。它可以实现吗? (可以关闭约束)

对于在集成测试之前填充数据库的 sql 脚本,我需要这个奇怪的功能。否则,尽管测试不依赖于 insert into 语句所需的更改的列集,但当表架构更改时,我会得到一堆失败的测试。

【问题讨论】:

你为什么不使用数据库模拟系统而不是在数据库上做一些奇怪的事情呢?您根本不需要数据库。 @JorgeCampos 模拟系统的行为是否与真实 SQL Server 的行为 100% 相似?我很乐意使用它,但我不是唯一一个做决定的人。 @JorgeCampos:在单元测试中使用模拟,而不是在集成测试中。像这样调用集成测试是因为它们集成了真实的组件。 @OlivierJacot-Descombes 我理解 Jorge 关于使用内存数据库的建议,他们可能已经开发了专门用于测试目的的扩展 API。 @voroninp 不,这不是 100% 你是对的。但是,即使您想做的事情也不会 100% 准确,我认为情况会更糟,因为您将没有正确的数据类型和结构来进行正确的测试。您可以创建数据库的副本(数据少得多),仅用作集成测试。 【参考方案1】:

这样的东西不是内置的。使用系统目录视图定义默认约束或反映表结构以在运行时生成测试数据。

【讨论】:

【参考方案2】:

随机仍然是您必须编码的“功能”。在工作中,我使用SQL Data Generator 生成随机数据。是的,我可以使用大量 NEWID() 和婴儿姓名数据库对其进行编码,但这不值得我花时间。

【讨论】:

我不希望那个随机部分是静态的,因为它也有一个与测试无关的结构。问题正是在这一点上,而不是数据本身。

以上是关于是否可以将任意数据插入表中?的主要内容,如果未能解决你的问题,请参考以下文章

mybatis 多条数据插入,判断表中是否含有将插入的数据,插入没有的数据。

是否可以在 Access 中执行触发器,在 SqlServer 数据库的表中插入新行?

如何有效地将元素插入数组的任意位置?

Java学习苦旅——链表的奥秘

将数据透视结果附加(插入)到现有 SQL 表中

是否可以在 FOREIGN KEY 的子表中插入行?